最新の投稿ブロックで抜粋を表示したとき、2つ目だけ抜粋文字数のフックを通過しない

  • このトピックには6件の返信、2人の参加者があり、最後に静海義明により1ヶ月前に更新されました。
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #57530
    静海義明
    参加者
    1

    トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。

    【お使いの Snow Monkey のバージョン】11.3.2
    【お使いのブラウザ】Chrome

    ===

    最新の投稿ブロックや、投稿一覧ページにて抜粋文を出力したとき、1列に3つ並んでいるカードのうち2番目のカードのみ指定した文字数に変更されません。

    試したこととして、

    1. WPMultibytePatchで文字数を指定
    wpmp-config.phpを設定して、抜粋文字数を変更しました。

    2. カスタムテンプレートを用意して$args[‘_excerpt_length’]に数値を指定した
    loop/entry-summary-post.phpを上書きするように準備した上で、53行目を’_excerpt_length’=> 50に変更しました。

    ローカル環境で、xDebugを使用して動作を確認したところ、2回目のみadd_filterで指定されている、$entry_summary_content_excerpt_lengthの中を通りませんでした。

    remove_filterと連続することによる影響なのかなと予想しておりますが、ご確認いただけますでしょうか。

    0
    #57559
    キタジマ タカシ
    キーマスター
    340

    下記の内容で検証してみました。

    wpmp-config.php の設置と編集

    wp-content/wpmp-config.php を設置し、下記部分を編集。

    $wpmp_conf['excerpt_mblength'] = 10;
    

    ループ内の _excerpt_length を編集

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/loop/entry-summary/content/content',
    	function( $args ) {
    		$args['vars']['_excerpt_length'] = 20;
    		return $args;
    	}
    );

    ちゃんと反映されているか確認

    add_filter(
    	'excerpt_length',
    	function( $length ) {
    		var_dump( $length );
    		return $length;
    	},
    	10000
    );

    とすると、各ループ内の抜粋部分に int(20) と表示され、切り取られました。ということから考えると、

    2. カスタムテンプレートを用意して$args[‘_excerpt_length’]に数値を指定した
    loop/entry-summary-post.phpを上書きするように準備した上で、53行目を’_excerpt_length’=> 50に変更しました。

    の上書きの方法を静海さんと同じにすると再現するのかな?と思いました。同じ方法で試してみたいと思うので、どのように上書きをしているのか教えてください!

    0
    #57636
    静海義明
    参加者
    1

    ありがとうございます!

    2. カスタムテンプレートを用意して$args[‘_excerpt_length’]に数値を指定した
    loop/entry-summary-post.phpを上書きするように準備した上で、53行目を’_excerpt_length’=> 50に変更しました。
    の上書きの方法を静海さんと同じにすると再現するのかな?と思いました。同じ方法で試してみたいと思うので、どのように上書きをしているのか教えてください!

    こちらについて、my-snow-monkey側のテンプレートを先に確認するようにhierarchyを設定した上で、同様のファイルをパス関係は一致するようにコピー。上記の通り53行目のみを書き換えております。

    hierarchyの変更イメージは以下のとおりです

    class Customize {
    	public function __construct() {
    		add_filter( 'snow_monkey_template_part_root_hierarchy', [ $this, 'custom_root_hierarchy' ] );
    	}
    
    	/**
    	 * テンプレートファイルの読み込み優先順変更
    	 *
    	 * @param $hierarchy
    	 * @return mixed
    	 */
    	public function custom_root_hierarchy( $hierarchy ) {
    		$hierarchy[] = MY_SNOW_MONKEY_PATH;
    		return $hierarchy;
    	}
    }
    new Customize();
    

    ただ、掲載件数を増やしたところ条件が2つ目ではなく一部記事だけになりましたので条件が違うかもしれません。

    私の記事作成の問題もあるかもしれませんので、もう少し私の方でも調査させていただきます。

    お手数をおかけしており申し訳ございません。

    0
    #57643
    キタジマ タカシ
    キーマスター
    340

    なるほどです。こちらでも試してみますね。
    53行目のみを書き換えであれば、下記のコードで _excerpt_length だけを書き換えるほうが良いかもしれません(もしかしたらテンプレートの上書き機能に不具合があるかもなので)。

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/loop/entry-summary/content/content',
    	function( $args ) {
    		$args['vars']['_excerpt_length'] = 20;
    		return $args;
    	}
    );

    お手数をおかけしており申し訳ございません。

    いえいえ、お気になさらずに!

    0
    #57648
    キタジマ タカシ
    キーマスター
    340

    ちょっと本題からはそれるかもしれないですが、今回のようにテンプレートを上書きして、その中の Helper::get_template_part の第3引数で変数を渡しても、それは反映されずにもともとのテンプレートの中にある Helper::get_template_part の第3引数が使われてる気がします…。まだ何故かはわかりませんが、この挙動がバグなので引き続き調査します。これを修正することでこのトピックの問題も改善されると良いのですが…。

    0
    #57650
    キタジマ タカシ
    キーマスター
    340

    あ、すみません、↑間違いでした、僕のテストミスで、ちゃんと動いていました。同じように53行目を書き換え(20 としました)ると、

    add_filter(
    	'excerpt_length',
    	function( $length ) {
    		var_dump( $length );
    		return $length;
    	},
    	10000
    );

    で全ての抜粋に int(20) が表示され切り取られました。なので何か別のカスタマイズが影響しているとか、別のプラグインが干渉しているとかがあるのかもしれません。

    0
    #57767
    静海義明
    参加者
    1

    ありがとうございます。
    私の方でも条件がわからなくなってきましたので、再度色々試してみようかと思います。

    お時間取らせまして失礼しました。

    1
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • トピック「最新の投稿ブロックで抜粋を表示したとき、2つ目だけ抜粋文字数のフックを通過しない」には新しい返信をつけることはできません。