任意のタクソノミー(レイアウト:パネル)に、カスタム投稿で入力している項目を表示したい

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

    【お使いの Snow Monkey のバージョン】15.7.0
    【お使いの Snow Monkey Blocks のバージョン】12.3.1
    【お使いの Snow Monkey Editor のバージョン】6.0.1
    【お使いのブラウザ】chrome
    【当該サイトのURL】非公開

    初めまして。いつも参考にさせていただいております。質問させていただきます。

    ### 実現したいこと

    カスタム投稿を使い、地域の「イベント情報」を発信しています。

    作成した投稿をイベント一覧で、名称や日付、会場がぱっと見て分かるようにしたいです。

    下記イメージの参考です。

    参考

    カスタム投稿で作成した投稿を任意のタクソノミー(レイアウト:パネル)で表示していますが、現状はタイトルしか表示されません。

    現状です。

    タイトル以外に、カスタム投稿で入力している項目(日時や会場名)を出力したいです。
    どのようにすれば実現可能でしょうか。

    任意のタクソノミーにカスタム投稿の内容をcssで調整が可能な形で出力する方法を教えていただけますと幸いです。

    また、カスタム投稿(events)以外には、影響されないような形だと幸いです。

    不慣れな部分が多くご迷惑おかけします。よろしくお願いいたします。

    ### 試したこと

    add_filter(
    	'snow_monkey_template_part_render',
    	function( $html, $slug, $name, $vars ) {
    		if ( 'events' !== get_post_type() ) {
    			return $html;
    		}
    
    		if ( 'template-parts/loop/entry-summary/title/title' === $slug ) {
    			$title_tag = $vars['_title_tag'];
    
    			return sprintf(
    				'<%1$s class="c-entry-summary__title">%2$s</%1$s>',
    				esc_html( $title_tag ),
    				esc_html( get_post_meta( get_the_ID(), 'event_name', true ) )
    			);
    		} elseif ( 'template-parts/loop/entry-summary/content/content' === $slug ) {
    			return sprintf(
    				'<div class="c-entry-summary__content">%1$s</div>',
    				esc_html( get_post_meta( get_the_ID(), 'event_day', true ) )
    			);
    		}
    
    		return $html;
    	},
    	10,
    	4
    );

    この方法で試してみましたが、レイアウトパネルではタイトルしか表示されませんでした。

    レイアウトをリッチメディアにした場合は「20210911」のような形で日付の表示はできましたが、デザイン等調整できず困っておりました。<?php the_time('Y/m/d') ?> のように、任意の形で出力したいのですが…。

    1
    Who liked:
    #86954
    GONSY
    参加者
    841

    shiさん、はじめまして。
    何点か質問があります。

    1. カスタム投稿タイプとのことですが、任意のタクソノミーの投稿ブロックのみで良いでしょうか?
    2. 最近の投稿ブロックブロックやアーカイブなどで表示することはありますか?
    3. 投稿ページ(イベントごとの個ページ)での表示は不要でしょうか?
    4. カスタムフィールドはどんな方法で入力させていますか?

    良かったら教えてください。

    3
    Who liked:
    #87113
    shi
    閲覧者
    5

    GONSY様、はじめまして。ありがとうございます。

    分かりづらく申し訳ございません。

     

    >①カスタム投稿タイプとのことですが、任意のタクソノミーの投稿ブロックのみで良いでしょうか?

    任意のタクソノミーの投稿ブロックで良いです。

     

    >②最近の投稿ブロックブロックやアーカイブなどで表示することはありますか?

    最近の投稿ブロックはカスタムではない、標準の「投稿」を表示する時に使用しています。

     

    >③投稿ページ(イベントごとの個ページ)での表示は不要でしょうか?

    カスタム投稿(events)で作成した投稿は、個別の投稿ページ=single-events.php(plugins/my-snow-monkey/override/single-events.php)で表示されるようしています。

    任意のタクソノミー

    >④カスタムフィールドはどんな方法で入力させていますか?

    Custom Post Type UIでカスタム投稿タイプ、Advanced Custom Fieldsでカスタムフィールドを作っています。

     

    答えになっていますでしょうか。

    よろしくお願いいたします。

    1
    Who liked:
    #87127
    GONSY
    参加者
    841

    shiさん

    くわしくありがとうございます。
    概ね以下のコードをmy-snow-monkey.phpに追加していただければ、ご希望の表示はできると思います。(もっと良いコードの書き方はあると思いますので参考までに(^^;)

    使用しているget_field()の部分は、設定しているフィールド名に変更してください。
    また不要なものは消してください。

    add_filter(
    'snow_monkey_template_part_render_template-parts/loop/entry-summary',
    	function( $html ) {
    	if ( 'event' === get_post_type() ):
    	ob_start();
    	?>
    	<?php
    
    		// カスタムフィールド:開催日 → event_day
    		// ACF デイトピッカー(返り値:Ymd)
    		$eDate =  get_post_meta( get_the_ID(), 'event_day', true );
    		$date = date_create( $eDate );
    
    		// 曜日用
    		$week = array("日", "月", "火", "水", "木", "金", "土");
    
    		// 開催日の表示は 「月.日」に変更
    		$eventDay = date_format($date,'n.j');
    
    		$today = wp_date('Ymd');
    
    		// カスタムフィールド:開始時刻 → event_starttime
    		// ACF Time Picker(返り値:G:i)
    		$startTime = get_field( 'event_starttime' );
    
    		// カスタムフィールド:開始時刻 → event_endtime
    		// ACF Time Picker(返り値:G:i)
    		$endTime = get_field( 'event_endtime' );
    
    		// 開催日以降の判定
    		// 開催日よりも今日の日付が大きい場合
    		$preriod = strtotime($eDate) < strtotime($today);
    
    		// カスタムフィールド:概要欄 → event_txt
    		// ACF テキストエリア(改行:なにもしない)
    		$eventSummary = get_field( 'event_txt' )
    	?>
    
    	<div class="event_day_post">
    		<p class="event_date"><?php echo esc_attr( $eventDay) ; ?><span class="week"><?php echo esc_attr( $week[(int)date_format($date,'w')] ) ?></span></p>
    		<p class="event_time"><?php echo esc_attr( $startTime ) ; ?> - <?php echo esc_attr( $endTime ) ; ?></p>
    	</div>
    
    	<div class="event_txt">
    		<p><?php echo nl2br( esc_attr( $eventSummary ) ); ?></p>
    	</div>
    
    	<?php if( $preriod ): ?> // 開催日以降の条件分岐
    		<div class="event_finish">終了しました</div>
    	<?php else: ?>
    		<div class="event_open">これから開催です</div>
    	<?php endif; ?>
    
    	<?php
    	$event = ob_get_clean();
    	
    	return str_replace(
    	'</header>',
    	'</header>'.$event , // 投稿タイトルの下に追加
    	
    	$html
    	);
    	endif;
    	return $html;
    	}
    );

    結果 ↓

    4
    Who liked:
    #87310
    shi
    閲覧者
    5

    GONSY様、確認が遅くなり申し訳ございません。

    早速ご対応いただきありがとうございます。

     

    お陰様で希望通り、表示することができました!

    見本通りにコードを書いていただき感謝です。

     

    大変お手数おかけいたしました。

    ありがとうございました!

     

    今後もこちらのフォーラム参考にさせていただきます。

    トピック閉じさせていただきます。

    0
    Who liked: No user
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • トピック「任意のタクソノミー(レイアウト:パネル)に、カスタム投稿で入力している項目を表示したい」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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