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

0
いいねをした人: 居ません
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #52379
    クラのこ
    閲覧者
    2

    【お使いの 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
    キタジマ タカシ
    参加者
    2252

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

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

    0
    いいねをした人: 居ません
    #52411
    キタジマ タカシ
    参加者
    2252

    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
    クラのこ
    閲覧者
    2

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

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

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

    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
    キタジマ タカシ
    参加者
    2252

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

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

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

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

    1
    いいねをした人: 居ません
    #52508
    キタジマ タカシ
    参加者
    2252

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

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

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。