ループ内のテンプレートをフックで上書きすると増えてしまう

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #52379
    クラのこ
    参加者
    1

    【お使いの Snow Monkey のバージョン】10.8.0
    【お使いのブラウザ】Google Chrome 83.0.4103.97
    【当該サイトのURL】-

    ===

    こんにちは!クラのこのクラク(旦那の方)です。

    functionで読み込むテンプレートを上書きできる機能は便利ですね!記事を参考に、著者情報の出力を削除する内容をMy Snow Monkeyに書いたのですが、ループを回すたびに上書きした内容が重複してしまいました。

    以下の例では日付が増えていっています。記事一覧レイアウトを変更した場合や、関連記事のループも同様でした。

    My Snow Monkeyに記述した内容は以下です。

    add_filter(
      'snow_monkey_get_template_part_template-parts/loop/entry-summary/meta/meta',
      function( $name, $vars ) {
        ?>
        <div class="c-entry-summary__meta">
          <ul class="c-meta">
            <li class="c-meta__item c-meta__item--published">
              <?php the_time( get_option( 'date_format' ) ); ?>
            </li>
          </ul>
        </div>
        <?php
      },
      10,
      2
    );

    僕の書き損じかもしれませんが、ご確認いただけたらと!

    0
    #52405
    キタジマ タカシ
    キーマスター
    339

    ありゃ、ほんとですね。。。。ご報告ありがとうございます、調査します!

    あ、ちなみに記事に間違いがあって、このフックは add_filter じゃなくて add_action でした。

    0
    #52411
    キタジマ タカシ
    キーマスター
    339

    snow_monkey_get_template_part_xxxx アクションフックはinc2734_view_controller_get_template_part_xxxx アクションフックをラップしたものなのですが、アクションフックのラップはフィルターフックのラップと違ってちょっと工夫が必要なようで、それが不足していたために何度もコールバックが追加されてしまうという感じになっていました。次のアップデートでコールバックは1つまでしか追加されないようにしようと思いますが、別なフックで対応したほうがいろいろわかりやすいかもしれません…。

    add_filter(
    	'snow_monkey_template_part_render',
    	function( $html, $slug ) {
    		if ( 'template-parts/loop/entry-summary/meta/meta' === $slug ) {
    			return 'hoge';
    		}
    		return $html;
    	},
    	10,
    	2
    );
    0
    #52427
    クラのこ
    参加者
    1

    なるほど、調査ありがとうございます!!

    そちらの構文の方がわかりやすいですね。
    テンプレート変更・変数変更と似てますし。

    以下のように修正して重複出力を解決できました!

    function custom_template__loop_entry_summary_meta_meta__remove_author() {
      ?>
        <div class="c-entry-summary__meta">
          <ul class="c-meta">
            <li class="c-meta__item c-meta__item--published">
              <?php the_time( get_option( 'date_format' ) ); ?>
            </li>
          </ul>
        </div>
      <?php
    }
    
    add_filter(
      'snow_monkey_template_part_render',
      function( $html, $slug ) {
        if ( 'template-parts/loop/entry-summary/meta/meta' === $slug ) {
          return custom_template__loop_entry_summary_meta_meta__remove_author();
        }
        return $html;
      },
      10,
      2
    );

    この方法で対応可能なので、アップデートではなく記事修正で良いかと思いました!

    0
    #52446
    キタジマ タカシ
    キーマスター
    339

    解決できてよかったです!

    この方法で対応可能なので、アップデートではなく記事修正で良いかと思いました!

    バグではあるのでアップデートで修正して、snow_monkey_get_template_part_xxx は非推奨ということにしようと思います。

    アップデート後、このトピックはクローズしますね。

    1
    #52508
    キタジマ タカシ
    キーマスター
    339

    v10.8.1 で対応しました。クローズします!

    1
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • トピック「ループ内のテンプレートをフックで上書きすると増えてしまう」には新しい返信をつけることはできません。