あるカテゴリーに投稿(登録)したカスタムフィールドの内容を記事一覧ページと記事ページに表示する方法について

0
いいねをした人: 居ません
  • このトピックには4件の返信、2人の参加者があり、最後にSunagawaにより3年、 6ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #58452
    Sunagawa
    閲覧者
    3

    【お使いの Snow Monkey のバージョン】11.5.5
    【お使いのブラウザ】Safari、Google Chrome
    【当該サイトのURL】(公開できる場合は書いていただいたほうがスムーズです)

    ===

    いつもお世話になっております。

    早速で恐れ入りますが、カスタフィールドで登録した内容を特定のカテゴリーで表示したく、下記のような条件分岐での記述を考えています。この内容を出力するには、snow-monkey/template-parts 内のそれぞれ該当する以下ファイルを編集するということでよろしいでしょうか。

    そうした場合に、snow-monkey/template-parts/archive/entry/content/content.phpsnow-monkey/template-parts/content/entry/content/content.php を用意されているフィルターフックの snow_monkey_template_part_rendersnow_monkey_pre_template_part_render を利用して書き換えるということでしょうか。

    また、snow-monkey/template-parts/archive/entry/content/content.phpsnow-monkey/template-parts/content/entry/content/content.php は、おそらく複製すると思うのですが、このファイルの my-snow-monkey フォルダ内での置き場所についても教えていただけると大変助かります。

    カスタマイズには、my-snow-monkey.php を利用しています。
    どうぞよろしくお願いします。

    ★記事一覧(アーカイブ)ページでの表示

    <?php if( is_category( 'cat-hoge' ) ) { //cat-hoge の場合 ?>
        // カスタームフィールドで登録した内容
        項目01:<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge01’, true ) ); ?>
        項目02:<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge02’, true ) ); ?>
        項目03:<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge03’, true ) ); ?>
        項目04:<a href="<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge04’, true ) ); ?>”>拡大して見る</a>
        項目05:<a href”<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge05’, true ) ); ?>”>詳しくはこちら</a>
    <?php } ?>

    snow-monkey/template-parts/archive/entry/content/content.php

    <?php while ( have_posts() ) : ?>
        // 上記のコードを記述予定。 
    <?php endwhile; ?>

    ★記事ページでの表示

    <?php if( in_category( 'cat-hoge' ) ) { //cat-hoge の場合 ?>
        // カスタームフィールドで登録した内容
        項目01:<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge01’, true ) ); ?>
        項目02:<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge02’, true ) ); ?>
        項目03:<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge03’, true ) ); ?>
        項目04:<a href="<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge04’, true ) ); ?>”>拡大して見る</a>
        項目05:<a href”<?php echo esc_html( get_post_meta( $post->ID, ‘cf-hoge05’, true ) ); ?>”>詳しくはこちら</a>
    <?php } ?>

    snow-monkey/template-parts/content/entry/content/content.php

    // 上記のコードを the_content() の上あるいは下に記述予定。
    <?php the_content(); ?>
    0
    いいねをした人: 居ません
    #58543
    キタジマ タカシ
    参加者
    2247

    えっと、テンプレートをカスタマイズしたいというときは、下記の2点について考慮して方法を決定するのが良いと考えています。

    1. 置換や単純な結合で対応可能か
    2. アクションフックで対応可能か

    「★記事一覧(アーカイブ)ページでの表示」の場合だと、ループの内側で、かつ <li class="c-entries__item"></div> を外す必要があるとなると置換では対応できないと思うのでテンプレートを複製してきて上書きする必要があると思います。

    「 my-snow-monkey フォルダ内での置き場所についても教えていただけると」とのことですが、My Snow Monkey はそのままの状態だと上書きする機能が有効化されていません。下記のページを参考にコードを追加することで My Snow Monkey 内にテンプレートを置いて上書きができるようになります。

    ただ、My Snow Monkey の存在意義は「テンプレートの上書きを抑制させる」ということなので、もし上書きを多用する必要があるのであれば、子テーマを使うのが良いと思います。

    「★記事ページでの表示」の場合は the_content() の前か後ろということなので snow_monkey_prepend_entry_contentsnow_monkey_append_entry_content のアクションフックを使うのが良いと思います。

    add_action(
    	'snow_monkey_prepend_entry_content',
    	function() {
    		?>
    		ここに追加したい HTML
    		<?php
    	}
    );
    0
    いいねをした人: 居ません
    #58688
    Sunagawa
    閲覧者
    3

    キタジマさん、お返事ありがとうございます!

    いただいたアドバイスをもとに、snow_monkey_prepend_entry_content を使って、記事ページに表示することができました。せっかく便利な仕組みがあるのに、どうしても「テーマファイルを編集」という考えのクセが抜け切れないです。。

    また、記事一覧ページは、ご指摘のとおりループの絡みや <li class="c-entries__item"></div> の取り扱いが難しそうでしたので、こちらもアドバイスのありました snow_monkey_template_part_root_hierarchymy-snow-monkey.php へ記述し、themes/snow-monkey/templates/view/archive-post.phpplugins/my-snow-monkey/override/templates/view/ へ複製して下記コードを書くことで意図した表示となりました。
    ありがとうございます!

    今後、似たようなことをやりたいなーと探す方もいるかもしれないので、できあがった表示ページの一部キャプチャ画像も貼っておきますね。上記のコードとあわせ、お役に立てると嬉しいです。

    ただ、My Snow Monkey の存在意義は「テンプレートの上書きを抑制させる」ということなので、もし上書きを多用する必要があるのであれば、子テーマを使うのが良いと思います。

    このあたりは、いくつか案件をやってみてどれくらいのことが求められているのかというところでの判断になりそうですね。あと、初歩的な質問かもしれませんが、子テーマと my-snow-monkey.php は併用(共存)可能ということでよろしいでしょうか?

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

    キャプチャありがとうございます! 見て思ったのですが、template-parts/archive/entry/content/content-xxx.php<div class="p-archive"></div>、もしくは <ul class="c-entries"></div> も別テンプレートに切り出す形でアップデートしたら今回のようなカスタマイズがもっとしやすそうですね…!

    子テーマと my-snow-monkey.php は併用(共存)可能ということでよろしいでしょうか?

    はい、可能です。

    問題なさそうであればトピッククローズお願いします!

    1
    いいねをした人: 居ません
    #58706
    Sunagawa
    閲覧者
    3

    記事一覧ページのコードが抜けていましたので改めて投稿しますね。
    大変失礼しました。

    <?php if( ! is_category( 'cat-hoge' ) ) { //カテゴリー「cat-hoge」でない場合 ?>
    		
    		//元々のコード〜〜〜
    		
    <?php } else { //カテゴリー「cat-hoge」の場合 ?>
    		
    		<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    		<div class="dummy-wrap">
    			<div class="dummy-head">
    				<h3><?php echo esc_html( the_title() ); ?></h3>
    			</div>
    			<div class="dummy-inner">
    				<div class="dummy-inner-wrap">
    					<div class="dummy-meta">
    						<div class="dummy-meta-datetime">
    							<span class="dummy-datetime-label">日時</span>
    							<span class="dummy-datetime-value"><?php echo esc_html( get_post_meta( get_the_ID(), 'cf-datetime', true ) ); ?></span>
    						</div>
    						<div class"dummy-meta-place">
    							<span class="dummy-place-label">場所</span>
    							<span class="dummy-place-value"><?php echo esc_html( get_post_meta( get_the_ID(), 'cf-place', true ) ); ?></span>
    						</div>
    					</div>
    					<div class="dummy-content-wrap">
    						<div class="dummy-descripition">
    							<?php echo esc_html( get_post_meta( get_the_ID(), 'cf-description', true ) ); ?>
    						</div>
    						<div class="dummy-link">
    							<div class="wp-block-buttons">
    								<div class="wp-block-button">
    									<a href="<?php echo esc_html( get_post_meta( get_the_ID(), 'url-attachment', true ) ); ?>" class="wp-block-button__link has-accent-color-background-color has-background" style="border-radius:1px">拡大して見る</a>
    								</div>
    							</div>
    							<div class="wp-block-buttons">
    								<div class="wp-block-button">
    									<a href="<?php echo esc_html( get_permalink() ); ?>" class="wp-block-button__link has-accent-color-background-color has-background" style="border-radius:1px">詳しくはこちら</a>
    								</div>
    							</div>
    						</div>
    					</div>
    				</div>
    			</div>
    		</div>
    		<?php endwhile; ?>
    		<?php endif; ?>
    		
    		<?php } ?>

    キャプチャありがとうございます! 見て思ったのですが、template-parts/archive/entry/content/content-xxx.php の <div class=”p-archive”></div>、もしくは <ul class=”c-entries”></div> も別テンプレートに切り出す形でアップデートしたら今回のようなカスタマイズがもっとしやすそうですね…!

    何かしらアップデートのヒントになりましたら嬉しいです!

    また、子テーマと my-snow-monkey.php は併用できるということで了解しました。

    解決しましたのでトピックをクローズします。
    ありがとうございました。

    1
    いいねをした人: 居ません
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • トピック「あるカテゴリーに投稿(登録)したカスタムフィールドの内容を記事一覧ページと記事ページに表示する方法について」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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