-
投稿者検索結果
-
2023年7月11日 7:11 PM #128035
返信が含まれるトピック: アーカイブページを表示させる際、カテゴリごとにタイトルを変更したい
一応検証済みですが、ほかに影響が出ないとも言えません。
まずはローカル環境などで試してみてください。
/** * ページタイトルを任意の名前に変更 * <h1 class="c-entry__title">ここ</h1> */ add_filter( 'snow_monkey_template_part_render_template-parts/archive/entry/header/header', function ($html) { $category_titles = array( 'カテゴリAのスラッグ' => 'Works', 'カテゴリBのスラッグ' => 'Profile' ); $category_slug = get_query_var('category_name'); if (array_key_exists($category_slug, $category_titles)) { $html = preg_replace( '|(<h1 class="c-entry__title">.*?</h1>)|ms', '<h1 class="c-entry__title">' . $category_titles[$category_slug] . '</h1>', $html ); } return $html; } ); /** * メタタイトルを任意の名前に変更 * <title>ここ - サイト名</title> */ add_filter( 'single_cat_title', function ($title) { $category_titles = array( 'カテゴリAのスラッグ' => 'Works', 'カテゴリBスラッグ' => 'Profile' ); $category_slug = get_query_var('category_name'); if (array_key_exists($category_slug, $category_titles)) { $title = $category_titles[$category_slug]; } return $title; } );
♥ 0いいねをした人: 居ません2023年6月6日 9:45 AM #1253922023年6月1日 6:18 PM #125042返信が含まれるトピック: 投稿一覧(リッチメディア)でのカテゴリー表示の条件分けをしたい。
「新しく投稿されたものに関してはカテゴリラベルのところにNewマークがつくようにする」は以下のコードを加えました。
すでに「NEW」が表示されているということですね。
私がやるとすれば、サムネイル上の「NEW」以外のカテゴリー名はCSS(display: none
)で消します。
ご提示のコードの場合、該当の要素にmy-new
がついていると思いますので、そこだけ強制的に表示させます。.c-entries .c-entry-summary__term { display: none; } .c-entries span[class*="my-new"] { display: block!important; }
カテゴリーの表示は、位置をCSSで移動させるのがちょっと嫌なので、フィルターフックsnow_monkey_template_part_render_template-parts/loop/entry-summary
で</header>
の後にreplace
を使ってリンクなしのカテゴリーを表示するようにしてあげれば、それっぽい感じになると思います。add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html ) { $category = get_the_category(); $cat_name = $category[0]->cat_name; $html = str_replace( '</header>', '</header><p class="cat_name_origin"><span>'. $cat_name. '</span></p>', $html ); return $html; } );
もっとスマートな方法もあるかと思いますが、1つの例として参考にしていただければと思います。
2023年5月22日 3:11 AM #123547返信が含まれるトピック: 任意のタクソノミーの投稿一覧にカスタムフィールドの値を表示させたい
どこまでがうまくいっていて、どこからがうまくいっていないのかがわからないので、適当なところで
var_dump()
して問題を把握すると良いかもしれませんね。add_filter( // template-parts/loop/entry-summary を書き換える 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html, $name, $vars ) { // 「シンプル」のときだけ実行 var_dump( $vars['_entries_layout'] ); if ( 'simple' === $vars['_entries_layout'] ) { // カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする // ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。 $course_types = get_field( 'course_type' ); var_dump( $course_types ); ob_start(); foreach ( $course_types as $course_type ) { echo '<span>' . $course_type . '</span>'; } $course_type_html = ob_get_clean(); var_dump( esc_html( $html ) ); return str_replace( '</section>', $course_type_html . '</section>', $html ); } return $html; }, 10, 3 );
2023年5月20日 4:14 AM #123481返信が含まれるトピック: 任意のタクソノミーの投稿一覧にカスタムフィールドの値を表示させたい
ありがとうございます。その後いろいろ調べながらやってみたのですが実現できず、とん挫しています。
エラーメッセージが出たので
}
return $html;を追加してエラーは出なくなったのですが表示はできずでした。
Advanced Custom Fieldsの関数get_fieldを使えばいいのでは?と思い変更したのですがそれではダメでした。※get_post_metaでも出来るようでしたが
https://lucy.ne.jp/bazubu/advanced-custom-fields-36452.html
add_filter( // template-parts/loop/entry-summary を書き換える 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html, $name, $vars ) { // 「シンプル」のときだけ実行 if ( 'simple' === $vars['_entries_layout'] ) { // カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする // ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。 $course_types = get_field( 'course_type' ); ob_start(); foreach ( $course_types as $course_type ) { echo '<span>' . $course_type . '</span>'; } $course_type_html = ob_get_clean(); return str_replace( '</section>', $course_type_html . '</section>', $html ); } return $html; }, 10, 3 );
♥ 0いいねをした人: 居ません2023年5月15日 11:05 AM #123138返信が含まれるトピック: 任意のタクソノミーの投稿一覧にカスタムフィールドの値を表示させたい
\Framework\Helper::get_template_part( 'template-parts/loop/entry-summary/term/term' ... );
はターム(カテゴリー等)の一覧を取得するものなので、「ここをカスタムフィールドを取得して HTML を生成・加工する」というコードに書き換えればよいのかなと思います。僕は ACF に詳しくないのと、実際に
course_type
にどのような値が入っているかがわからないのであくまでサンプルですが、だいたい下記のような感じになるのかなと思います。add_filter( // template-parts/loop/entry-summary を書き換える 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html, $name, $vars ) { // 「シンプル」のときだけ実行 if ( 'simple' === $vars['_entries_layout'] ) { // カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする // ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。 $course_types = get_post_meta( get_the_ID(), 'course_type' ); ob_start(); foreach ( $course_types as $course_type ) { echo '<span>' . $course_type . '</span>'; } $course_type_html = ob_get_clean(); return str_replace( '</section>', $course_type_html . '</section>', $html ); }, 10, 3 );
2023年5月11日 8:11 PM #122802返信が含まれるトピック: カスタム投稿で表示させたものを他の固定ページにも表示させたい
お世話になっております。
お忙しい中、検証いただき誠にありがとうございます。
add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html, $name ) { if ( is_page( 47 ) ) { // カスタムフィールドで設定したフィールド名を代入 $acf_image = get_field('property_image'); $acf_type = get_field('property_type'); $acf_location = get_field('property_location'); $acf_price = get_field('property_price'); $acf_land_area = get_field('property_land_area'); // テンプレートのh3タグの後に<div class='property-info'>を追加 $acf_property_info = '</h3> <div class="property-info">' . '<div class="property-img"><img src="' . esc_url($acf_image) . '" alt="Image"></div>' . '<div class="property-body">' . '<div class="property-tag">' . '<p>' . esc_html($acf_type) . '</p>' . '</div>' . '<div class="property-content">'. '<p class="location">' . esc_html($acf_location) . '</p>' . '<p class="price">' . esc_html($acf_price) . '</p>' . '<p class="land_area">' . esc_html($acf_land_area) . '</p>' . '</div>' . '</div>' . '</div>'; // テンプレートパーツのh3タグの後ろにdivタグを追加する $html = str_replace( '</h3>', $acf_property_info, $html ); } return $html; }, 10, 2 );
このように記述しました。
アイキャッチとタイトルが表示されてしまいますが、こちらはdisplay: none;で消してしまえばいけそうです。
同じページに投稿ページの最新の投稿もブロックで使っていたので
こちらもimageが出てきてしまっていますが、ページ指定で非表示にすればいけそうです。
また試してみて報告させていただきます。
アドバイスいただき、ありがとうございます。
♥ 0いいねをした人: 居ません2023年5月1日 7:58 PM #122417返信が含まれるトピック: カスタム投稿で表示させたものを他の固定ページにも表示させたい
ちょっと実際にどういう値が入ってきているのか確認したいので、コードを下記のように改変して、固定ページでどのような値が表示されるか教えてください!
add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html, $name ) { var_dump( $name ); var_dump( get_post_type() ); if ( 'propertys' === $name ) { // 〜前後省略〜 }, 10, 2 );
2023年5月1日 4:19 PM #122401返信が含まれるトピック: カスタム投稿で表示させたものを他の固定ページにも表示させたい
template-parts/loop/entry-summary/title/title
はアーカイブページの記事一覧部分でも最近の投稿ブロックの記事一覧部分でも共通して使用されているので、フックはどちらの場合も通っていると思います。気になるのは
if( is_post_type_archive('propertys') ){
のところで、この条件だと「propertys というカスタム投稿アーカイブページのとき」だけしか処理が実行されなくなってしまいます。add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html, $name ) { if ( 'propertys' === $name ) { // 〜前後省略〜 }, 10, 2 );
のように書き換えるとどうでしょうか?
2023年5月1日 2:56 PM #122392返信が含まれるトピック: カスタム投稿で表示させたものを他の固定ページにも表示させたい
キタジマさん、早速のご返信ありがとうございます。
カスタム投稿アーカイブの一覧部分と全く同じデザインの一覧を、特定の固定ページにも表示させたいということでしょうか?
はい、そのように表示したいです。
////////////////////////////////////// // カスタム投稿ページにカスタムフィールドを表示 ////////////////////////////////////// add_filter( 'snow_monkey_template_part_render_template-parts/content/entry/content/content', function ($html) { if (get_post_type() === 'propertys') { // カスタムフィールドで設定したフィールド名を代入 $acf_image = get_field('property_image'); $acf_type = get_field('property_type'); $acf_location = get_field('property_location'); $acf_price = get_field('property_price'); $acf_land_area = get_field('property_land_area'); $acf_property_info = '<div class="property-info">' . '<div class="property-img"><img src="' . esc_url($acf_image) . '" alt="Image"></div>' . '<div class="property-body">' . '<div class="property-tag">' . '<p>' . esc_html($acf_type) . '</p>' . '</div>' . '<div class="property-content">'. '<p class="location">' . esc_html($acf_location) . '</p>' . '<p class="price">' . esc_html($acf_price) . '</p>' . '<p class="land_area">' . esc_html($acf_land_area) . '</p>' . '</div>' . '</div>' . '</div>'; $html = $acf_property_info; } return $html; } ); //////////////////////////////////////////// // カスタム投稿のアーカイブページにカスタムフィールドを表示 //////////////////////////////////////////// add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html ) { if( is_post_type_archive('propertys') ){ // カスタムフィールドで設定したフィールド名を代入 $acf_image = get_field('property_image'); $acf_type = get_field('property_type'); $acf_location = get_field('property_location'); $acf_price = get_field('property_price'); $acf_land_area = get_field('property_land_area'); // テンプレートのh2タグの後に <div class="property-info">を追加 $acf_property_info = '</h2><div class="property-info">' . '<div class="property-img"><img src="' . esc_url($acf_image) . '" alt="Image"></div>' . '<div class="property-body">' . '<div class="property-tag">' . '<p>' . esc_html($acf_type) . '</p>' . '</div>' . '<div class="property-content">'. '<p class="location">' . esc_html($acf_location) . '</p>' . '<p class="price">' . esc_html($acf_price) . '</p>' . '<p class="land_area">' . esc_html($acf_land_area) . '</p>' . '</div>' . '</div>' . '</div>'; // テンプレートパーツのh2タグの後ろにdivタグを追加する $html = str_replace( '</h2>', $acf_property_info, $html ); } return $html; } );
アーカイブページの見た目がこちらで(この画像の上にセクションのタイトルがあります)
・実際に他の固定ページで「最近の投稿」ブロックを使用した見た目が
↓↓↓
アイキャッチ画像を仮に抜くと上記添付画像の左上のように何も画像が表示されません。
画像に関してはアイキャッチ画像とカスタムフィールドの画像を合わせれば良いのですがテキストなどをこちらにも紐付けさせることは可能でしょうか。お忙しい中大変恐れ入りますが、よろしくお願いいたします。
♥ 0いいねをした人: 居ません2023年4月24日 2:12 PM #122077返信が含まれるトピック: 任意のタクソノミーの投稿の特定の場所にカテゴリーを表示させたい
確かに
position
調整する方式だと逆にややこしくなりそうですね…。一応フックを使ったやり方も考えてみたので共有します。add_filter( // template-parts/loop/entry-summary を書き換える 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html, $name, $vars ) { // 「シンプル」のときだけ実行 if ( 'simple' === $vars['_entries_layout'] ) { // カテゴリーラベルを取得して、各項目の最後に追加する。 ob_start(); \Framework\Helper::get_template_part( 'template-parts/loop/entry-summary/term/term', $name, array( '_context' => $vars['_context'], '_terms' => $vars['_terms'], ) ); $terms = ob_get_clean(); return str_replace( '</section>', $terms . '</section>', $html ); } return $html; }, 10, 3 );
これで画像に重なって表示されるやつ(デフォルト)と、項目の最後に追加されたやつの2箇所にタームが表示されるようになります。この状態で画像上のタームは CSS で消して、最後に追加されたタームは CSS で位置調整すると
position
だけでやる場合よりも調整しやすいかなと思います。2023年4月21日 8:12 AM #121933返信が含まれるトピック: エントリーカードにWP Ulikeのハートマークを表示させたい
snow_monkey_template_part_render_
フックは文字列をreturn
する必要があります。wp_ulike()
がどのような関数なのかわからないのですが、文字列を「出力」する関数だと仮定すると、下記のようなコードでどうでしょうか?add_action( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/meta/meta', function( $html ) { // この $html にもともとのメタ情報の HTML が格納されています ob_start(); // ここから先「出力」されるものをバッファリング(変数に格納できるように)する if ( function_exists( 'wp_ulike' ) ) { wp_ulike('get'); // 出力(バッファリングされる) } $ulike = ob_get_clean(); // $ulike に格納 return $html . $ulike; // もともとの HTML と ulike を返す(どちらも表示する) } );
♥ 0いいねをした人: 居ません2023年3月22日 9:17 PM #120400返信が含まれるトピック: 外部WordPressサイトのRSSに含まれるカスタムフィールドの情報をRSSブロックに表示したい
コールバック関数の第3引数
$vars
の中の_item
にSimplePieItem
という RSS のアイテムを解析してオブジェクトにしてくれたやつが入っています。その中にちゃんとpostmeta
というデータも含まれているみたいだったのですが、僕も SimplePie に詳しくなくて、ちょっとこれがベストなのか自身はないのですが動いているみたいなので共有します。$vars['_item']->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['postmeta'][0]['data']
という感じでデータがとれるみたいです。add_filter( 'snow_monkey_template_part_render_template-parts/loop/rss', function( $html, $name, $vars ) { $postmeta = ! empty( $vars['_item']->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['postmeta'][0]['data'] ) ? $vars['_item']->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['postmeta'][0]['data'] : false; // postmeta がなければ何もせずに return if ( ! $postmeta ) { return $html; } ob_start(); ?> <div class="event-meta"> <?php echo esc_html( $postmeta ); ?> </div> <?php $postmeta = ob_get_clean(); return str_replace( '</header>', '</header>' . $postmeta, $html ); return $html; }, 10, 3 );
2023年3月20日 10:38 PM #120251返信が含まれるトピック: 投稿記事一覧にカテゴリーラベルと”NEW”アイコンを表示させたい
記事タイトルの前に出力するコードを書いてみました。
add_filter( // template-parts/loop/entry-summary/title/title.php が出力する HTML を書き換える 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function( $html ) { $days = 7; // NEWマークを表示する日数 $now = date_i18n( 'U' ); // 今の時間 $entry = get_the_time( 'U' ); // 投稿日の時間 $term = date( 'U', $now - $entry ) / 86400; if ( $days > $term ) { // 前に New を追加 $html = '<span class="new">New</span>' . $html; } return $html; } );
上記を参考に、出力するテンプレートや出力位置を変更したりしてみてもらえればと思います。
-
投稿者検索結果