-
投稿者検索結果
-
2021年9月15日 9:35 AM #87197
返信が含まれるトピック: アーカイブやサイドバーなどの日付に曜日を追加したい
また、ここは
add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
というコードで日付を表示する処理を追加しているので、
snow_monkey_template_part_render
フィルターフックでの書き換えが難しいのであればremove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
でデフォルトの日付表示処理を外して、改めてオリジナルの日付表示処理を追加するほうがわかりやすいかもしれませんね。
—-
追記:すみません、↑は誤りです。↑は詳細ページのメタ情報をについてでした。今回は一覧部分の日付なので違いますね。
一覧部分の日付(というかメタ情報)は、
template-parts/loop/entry-summary/meta/meta.php
というファイルで表示されています。この部分は子テーマにtemplate-parts/loop/entry-summary/meta/meta-{投稿タイプ名}.php
というファイルがあるとそれが優先されて使われるようになっているので、子テーマにそのファイルをつくって独自に日付の表示処理を書いてしまったほうがわかりやすいかもしれませんね。2021年9月14日 4:33 PM #87131返信が含まれるトピック: アーカイブやサイドバーなどの日付に曜日を追加したい
以下を参考にしました。
add_filter( 'snow_monkey_template_part_render', function( $html, $slug ) { if ( 'template-parts/loop/entry-summary/meta/meta' === $slug ) { return preg_replace( '| <ul> <li class="c-meta__item c-meta__item--published">.*?</li> </ul> |ms', ' <ul> <li class="c-meta__item c-meta__item--modified">' . get_the_modified_time( get_option( 'date_format' ) ) . '</li> </ul> ', $html ); } return $html; }, 10, 2 );
♥ 0Who liked: No user2021年9月14日 4:25 PM #87127返信が含まれるトピック: 任意のタクソノミー(レイアウト:パネル)に、カスタム投稿で入力している項目を表示したい
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; } );
結果 ↓
2021年8月26日 4:05 PM #85484返信が含まれるトピック: お知らせバーにチャットボットの機能をonclickで導入したいがエラーになる
はい、そういうことになります。最終的には下記の HTML にならないとダメなわけですよね。
<a onclick="ChannelIO('showMessenger')">...</a>
現状は下記のようになっています。
<a onclick="ChannelIO('showMessenger')" href="onclick="ChannelIO('showMessenger')"">...</a>
この
href="..."
は前述したようにリンク先の URL を記述するものなので、現状の HTML の場合はhttps://onclick="ChannelIO('showMessenger')"
という「URL」に移動する、ということになります。そのような URL は存在しないので 404 になります。なのでリンク先には
#
と入力してリンクによるページ遷移をしなくするか、フックでhref
ごと消してしまうかのどちらかの対応が必要になるかなと思います。注意点として、リンク URL 未入力だとお知らせバー自体表示されなくなってしまうので、フックでhref
を消す場合でも何らかの入力が必要です。add_filter( 'snow_monkey_template_part_render', function( $_html, $_slug ) { if ( 'template-parts/common/infobar' === $_slug ) { // onClick を追加 $_html = str_replace( '<a class="p-infobar__inner"', '<a class="p-infobar__inner" onclick="ChannelIO(\'showMessenger\')"', $_html ); // href を削除(リンク URL に入力している内容によってはちゃんと消えないかも) $_html = preg_replace( '|href=".+"|', '', $_html ); } return $_html; }, 10, 2 );
♥ 0Who liked: No user2021年8月24日 12:23 PM #85240返信が含まれるトピック: 最新の投稿ブロックのテキストをカスタムフィールドで表示したい
市岡歩夢さん、こんにちは。
ほかにも方法はあるかと思いますが、こちらでご希望のことができると思います。
カスタム投稿タイプ名は
member
。
Advanced Custom Fieldsのカスタムフィールド(設定)は- カスタムフィールド名:spec
- フィールドタイプ:テキストエリア
- 改行:なにもしない
投稿画面でのカスタムフィールドの入力は
選手経歴______________ 出身地_________________ ポジション___________ 一言____________
と、改行しています。
これらを前提として、my-snow-monkey.php
に以下を追記/** * 【最近の投稿】(シンプル)投稿タイプ「メンバー」のみカスタムフィールド"spec"を表示 */ add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/content/content', function ( $html ) { if ( 'post' == $post_type ) { return $html; } if ( 'member' == get_post_type() ) { return sprintf( '<div class="c-entry-summary__content">%1$s</div>', nl2br( esc_html( get_field( 'spec' ) ) ) ); } return $html; }, 10, 4 ); /** * CPT"member"のシングルページにカスタムフィールド"spec"を表示 */ add_action( 'snow_monkey_prepend_entry_content', function() { if ( is_single() && 'member' === get_post_type() ) { ?> <div class="member_spec"> <p><?php echo nl2br( esc_html( get_field( 'spec' ) ) ); ?></p> </div> <?php } } );
これでどうでしょうか?
お試しください。2021年8月22日 4:52 PM #85082【お使いの Snow Monkey のバージョン】バージョン: 15.3.5
【お使いの Snow Monkey Blocks のバージョン】12.1.0
【お使いの Snow Monkey Editor のバージョン】6.0.0
【お使いのブラウザ】Chrome
【当該サイトのURL】 ローカル以下の記事を参考にし、一覧ページにカスタムフィールドを反映させる設定を進めております。
記事内のコードにて、投稿文(c-entry-summary__content)を単一のカスタムフィールドで置き換えることはできましたが、
この投稿文を複数のカスタムフィールドで置き換える方法はありますでしょうか。
以上、ご教示のほど宜しくお願い致します。add_filter(
‘snow_monkey_template_part_render’,
function( $html, $slug, $name, $vars ) {
if ( ‘投稿タイプ名’ !== get_post_type() ) {
return $html;
}if ( ‘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(), ‘カスタムフィールド名A’, true ) )
);
}return $html;
},
10,
42021年8月21日 11:13 AM #85012返信が含まれるトピック: カスタム投稿タイプの記事テンプレート編集
でもこれは非推奨なのですよね。My Snow Monkeyでのフックが推奨なのですよね
非推奨というのは、Snow Monkey テーマが子テーマに向いていないというわけではなくて、僕が WordPress の子テーマというものを積極的には使わないほうが良いと思っているということです。
むしろ Snow Monkey は子テーマを使いやすいように工夫している(テンプレートを小分けにしたり、デバッグコメントとしてテンプレートの情報を出力するようにしたり)ので、フックでのカスタマイズが苦手な方は子テーマを使うのもありだと思います(個人的には、コードによるカスタマイズが難しいという方は無理にカスタマイズせずに使うほうが安全だとは思いますが)。
まえ、My Snow Monkey内のコードで数行のHTMLを見ましたが、フックかけた場所をごそっとHTMLに入れ替えることも
可能なのですよねまーちゅうさんが書かれていた
snow_monkey_template_part_render_{slug}
とか、snow_monkey_get_template_part_{slug}
でできます。♥ 0Who liked: No user2021年8月20日 10:07 AM #84927返信が含まれるトピック: カスタム投稿タイプの記事テンプレート編集
こんにちは。
テンプレートの内容を書き換える場合は、フィルターフックのsnow_monkey_template_part_render_{slug}
を使用します。
テンプレートの内容を書き換えるローカル環境等でデバッグモードをtrueにしておくと、ソース上にどのテンプレートを使用しているのかが表示されます。
・この記事を書いた人
・関連記事
を単純に消すだけなら、以下のコードを My Snow Monkey に追加すればOKです。add_filter( 'snow_monkey_template_part_render_template-parts/common/profile-box', function ( $html ) { $post_type = get_post_type(); if ( 'special' == $post_type ) { return; } return $html; } ); add_filter( 'snow_monkey_template_part_render_template-parts/content/related-posts', function ( $html ) { $post_type = get_post_type(); if ( 'special' == $post_type ) { return; } return $html; } );
2021年8月18日 11:00 AM #84699返信が含まれるトピック: Snow Monkey Footer CTAのラベル内の文字を改行させたい
ラベル部分
esc_html()
して出力されるので HTML タグ使えないのですよね…><snow_monkey_template_part_render_footer-cta/primary-btn
フックを使って、文字列を書き換えするのが簡単かもです。管理画面でプライマリーボタンのラベルに「無料相談のご予約のお電話はこちら」と入れておいて、
add_filter( 'snow_monkey_template_part_render_footer-cta/primary-btn', function( $html ) { return str_replace( '無料相談のご予約のお電話はこちら', '無料相談のご予約の<br>お電話はこちら', $html ); } );
というコードでラベルを書き換えて
<br>
を入れると。こんな感じでどうですかねー。♥ 0Who liked: No user2021年8月18日 10:30 AM #84683返信が含まれるトピック: ヘッダーのロゴとメニューを,ディレクトリごとに切り替えられるようにしたい
なるほどです。
team-a
、team-b
はそれぞれ固定ページということですね。例えばロゴについてはsnow_monkey_template_part_render_template-parts/site-branding
というフックで書き換えが可能です。add_action( 'snow_monkey_template_part_render_template-parts/site-branding', function( $html ) { // 固定ページじゃないときは書き換えない if ( ! is_page() ) { return $html; } // 一番先祖の固定ページの ID を取得 $founder_id = get_the_ID(); $ancestors = get_post_ancestors( get_the_ID() ); if ( $ancestors ) { $founder_id = end( $ancestors ); } // 先祖の ID が 100 か 101 なら(ここで team-a か team-b か判定) if ( 100 === $founder_id || 101 === $founder_id ) { // ロゴ部分を書き換える return preg_replace( ... ); } return $html; } );
が、グローバルナビゲーションやドロワーナビゲーションについてはちょっと簡単にはいかなさそうですね…。WordPress のメニュー機能を使っていて、それが登録されているかどうかを判断してナビゲーションを出力するわけですが、2種類のナビゲーションを登録する想定ではつくられていないので、単純にナビゲーションを出力する部分だけではなくて関連する部分すべてを書き換えたり調整したりする必要がでてきます。ナビゲーションをハードコーディングする形にするのが簡単かもですが、いろいろ不都合も多そうなので、僕ならマルチサイトにするかなぁと思いました(もちろん人によって考えは違うと思います)。
♥ 0Who liked: No user2021年8月14日 6:44 PM #84282返信が含まれるトピック: 記事ページのタイトルc-entry__title h1 を別の場所に表示させたい
@Olein_jpさま
ご報告が遅くなり大変失礼をいたしました。
教えていただいたコードでh1タイトルを含むheader要素を投稿ページ(is_single)に出力させないようにしました。`add_filter(
‘snow_monkey_template_part_render_template-parts/content/entry/header/header’,
function ( $html ) {
if ( is_single() ) {
return;
}
return $html;
}
);その後、h1タイトルを出力させたい任意の場所にはブロックの>カスタムHTMLにて表示させました。
この度は貴重なお時間を割いて検証までして頂きありがとうございます!いつもこのフォーラムやoleinさんのHSMとキタジマさんとのYoutubeも拝聴させていただいて本当に勉強になっていますし、トークも楽しませてもらっています!ありがとうございます。
♥ 0Who liked: No user2021年8月3日 6:20 AM #82983返信が含まれるトピック: 記事ページのタイトルc-entry__title h1 を別の場所に表示させたい
HTML構造のどの部分にどう入れたいのかがわからないので、これが正しいのか判断できませんが、ページヘッダー部分(ページタイトルなどを出力している部分)をDOM構造ごと非表示にするには、このようなコードで実現できると思います。条件分岐は必要に応じて書き換えてください。
add_filter( 'snow_monkey_template_part_render_template-parts/content/entry/header/header', function ( $html ) { if ( is_page() ) { return; } return $html; } );
単純に固定ページで出力させていないだけです。
そして、任意の場所に独自のタイトルを出力する場合ですが、例えば
the_content
の最上位に挿入したい場合(これだと上記を消す意味がないのであれですが)、add_filter( 'the_content', function ( $content ) { if ( is_page() ) { $page_title = '<h1 class="original-page-title">' . get_the_title() . '</h1>'; $content = $page_title . $content; return $content; } return $content; } );
こんな感じでできると思います。一応動作は検証してあります。
デザインの都合上、ページタイトル部分の出力位置を変えたいということだと思うのですが、DOM構造的にどの部分を削除して、どのようなDOMを具体的に入れたいのかを明確に書かれた方がストレートな返答をしやすいので、問題解決には近道になると思います。
あと、開発段階とは言え現状が見られる共有URLを用意されると、よりスピーディーかと思います。
ご確認ください。
♥ 0Who liked: No user2021年8月2日 10:14 AM #82871返信が含まれるトピック: 記事ページのタイトルc-entry__title h1 を別の場所に表示させたい
もっとスマートな方法があるかもしれませんが、最終的にどんなDOM構造にされたいのかなど詳細はわかりかねるので、以下の流れで実現できそうだなと感じます。(未検証)
snow_monkey_template_part_render_template-parts/content/entry/header/header
へのフィルターフックで<header class="c-entry__header">〜</header>
を出力させないようにする- (構造がわからないので的確かどうかわかりませんが)
the_content
の冒頭にタイトルを出力させるようフックで処理
これで、
ページトップのh1タイトルをなくして(cssにて非表示ですとh1が2箇所になったままになるので)
ブロックでデザインしている箇所にh1タイトルを表示させたいという要件はクリアできそうな気がします。ご確認ください。
2021年7月30日 11:18 PM #82658返信が含まれるトピック: 特定のカスタム投稿タイプのアーカイブページで、投稿一覧にタグ・ディスクリプションを表示させたい。
名前と得意分野で、それぞれコードを分けて以下のような感じでどうでしょうか?
/** * カスタム投稿タイプのアーカイブページにて、投稿一覧(リッチメディア型)のタイトルの前に、'名前:'を表示 * * @param string $html はコンテンツの中身. */ add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html ) { if ( 'banso-mate' !== get_post_type() ) { return $html; } $html = str_replace( '<h3>', '<h3>名前:', $html ); return $html; } ); /** * カスタム投稿タイプのアーカイブページにて、投稿一覧(リッチメディア型)に、タグ・ディスクリプションを表示 * * @param string $html はコンテンツの中身. */ add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/content/content', function ( $html ) { if ( 'banso-mate' !== get_post_type() ) { return $html; } $postid = get_the_ID(); $taxonomy = 'banso_tags'; $post_terms = get_the_terms( $postid, $taxonomy ); if ( ! empty( $post_terms ) ) { $tags = '<div>'; $tags .= '<h3>得意分野:</h3>'; $tags .= '<div>'; $tags .= '<ul class="smb-taxonomy-terms__list">'; foreach ( $post_terms as $post_term ) { $term_name = $post_term->name; $tags .= '<li class="smb-taxonomy-terms__item">' . $term_name . '</li>'; } $tags .= '</div>'; $tags .= '</div>'; } $meta_description = get_post_meta( get_the_ID(), 'wp-seo-meta-description', true ); $html = $tags . '<div class="c-entry-summary__content">' .$meta_description. '</div>'; return $html; } );
-
投稿者検索結果
Search results of "snow_monkey_template_part_render"
-
検索結果
-
【お使いの Snow Monkey のバージョン】バージョン: 15.3.5
【お使いの Snow Monkey Blocks のバージョン】12.1.0
【お使いの Snow Monkey Editor のバージョン】6.0.0
【お使いのブラウザ】Chrome
【当該サイトのURL】 ローカル以下の記事を参考にし、一覧ページにカスタムフィールドを反映させる設定を進めております。
記事内のコードにて、投稿文(c-entry-summary__content)を単一のカスタムフィールドで置き換えることはできましたが、
この投稿文を複数のカスタムフィールドで置き換える方法はありますでしょうか。
以上、ご教示のほど宜しくお願い致します。add_filter(
‘snow_monkey_template_part_render’,
function( $html, $slug, $name, $vars ) {
if ( ‘投稿タイプ名’ !== get_post_type() ) {
return $html;
}if ( ‘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(), ‘カスタムフィールド名A’, true ) )
);
}return $html;
},
10,
4