-
投稿者検索結果
-
2019年9月20日 9:22 AM #28438
返信が含まれるトピック: 目次のデザイン(数字)を変更したい
以下、ご確認お願いします!
<?php /** * Plugin name: My Snow Monkey * Description: このプラグインに、あなたの Snow Monkey 用カスタマイズコードを書いてください。 * Version: 0.1.1 * * @package my-snow-monkey * @author inc2734 * @license GPL-2.0+ */ /** * Snow Monkey 以外のテーマを利用している場合は有効化してもカスタマイズが反映されないようにする */ $theme = wp_get_theme( get_template() ); if ( 'snow-monkey' !== $theme->template && 'snow-monkey/resources' !== $theme->template ) { return; } // サイドバーのウィジェットの見出しを h2 から h4 に変更する add_filter( 'dynamic_sidebar_params', function( $params ) { if ( preg_match( '|sidebar|', $params[0]['id'] ) ) { $params[0]['before_title'] = str_replace( '<h2 ', '<h4 ', $params[0]['before_title'] ); $params[0]['after_title'] = str_replace( '</h2> ', '</h4> ', $params[0]['after_title'] ); } return $params; } ); // コメントを非表示に add_action( 'snow_monkey_get_template_part_template-parts/discussion/comments', function() { } ); // トラックバックを非表示に add_action( 'snow_monkey_get_template_part_template-parts/discussion/pings', function() { } ); // 前後の投稿 add_filter( 'gettext', function( $translation, $text, $domain ) { if ( 'snow-monkey' === $domain && 'Old post' === $text ) { return '前の記事'; } elseif ( 'snow-monkey' === $domain && 'New post' === $text ) { return '次の記事'; } return $translation; }, 10, 3 ); // 記事一覧の日付の位置 add_filter( 'snow_monkey_template_part_render', function( $html, $slug, $name, $vars ) { if ( 'template-parts/loop/entry-summary' === $slug && 'post' === $name ) { if ( 'rich-media' === $vars['_entries_layout'] ) { $html = preg_replace( '|<div class="c-entry-summary__meta">.*?</div>|ms', '', $html ); ob_start(); \Framework\Helper::get_template_part( 'template-parts/loop/entry-summary/meta/meta' ); $meta = ob_get_clean(); $html = str_replace( '<h2 class="c-entry-summary__title">', $meta . '<h2 class="c-entry-summary__title">', $html ); } } return $html; }, 10, 4 ); // 投稿日でなく更新日 add_filter( 'snow_monkey_template_part_render', function( $html, $slug ) { if ( 'template-parts/loop/entry-summary/meta/meta' === $slug ) { return preg_replace( '|<li class="c-meta__item c-meta__item--published">.*?</li>|ms', '<li class="c-meta__item c-meta__item--modified">' . get_the_modified_time( get_option( 'date_format' ) ) . '</li>', $html ); } return $html; }, 10, 2 ); // add_filter( 'inc2734_wp_contents_outline_view_render', function( $html, $slug, $name, $vars ) { if ( 'wp-contents-outline' === $slug ) { return preg_replace( '|<h2 class="wpco__title">(.*?)</h2>|', '<div class="wpco__title">$1</div>"', $html ); } return $html; }, 10, 4 );
/*****目次*****/ .wpco{ position: relative; width: 100% !important; margin: 2.5em 0; background: #f9f9f9; box-shadow: 0 1.5px 2.4px rgba(0,0,0,.15); font-size: 15px; } .wpco .contents-outline a { flex-direction: row; padding: .23rem 0; } .wpco .contents-outline a:before { content: ''; width: 10px; height: 10px; border-radius: 100%; margin-top: 1em; font-size: 1px; overflow: hidden; padding: 0; background-color: #d5d5d5!important; } .wpco .contents-outline ol ol { font-size: 14px; }
♥ 0いいねをした人: 居ません2019年9月18日 11:00 PM #28305返信が含まれるトピック: 最近の投稿ウィジェットでカスタムフィールドを表示させたい
このとき、バージョン情報に気をつけるべきと言う事は見たのですが、コレって、各テンプレートの上部にあるversion部分を指していると言う事で良いですかね?
テンプレート上部にある @version によるバージョンチェックは「子テーマでのテンプレート上書き」のときのみおこなわれます。なので My Snow Monkey でやる場合は、Snow Monkey のアップデートによりそのテンプレートに更新が入っても(@version があがっても)、警告はでないということになりますね。
基本的には元々あるファイルをコピーしてきて、必要最低限のif文などを入れて独自テンプレの差し込みをHelperでやっているという感じなんですが…どうでしょう?
差し込む位置が、
str_repace()
、preg_replace()
で指定できるなら、テンプレート上書きではなくsnow_monkey_template_part_render
での置換がおすすめです(そのほうが Snow Monkey アップデート時の影響を最小限にできる可能性が高いため)。下記が参考になるかも知れません。
str_repace()
、preg_replace()
で指定できる部分でないなら、テンプレート上書きになりますかね。♥ 0いいねをした人: 居ません2019年9月17日 8:33 PM #28176返信が含まれるトピック: 最近の投稿ウィジェットでカスタムフィールドを表示させたい
「Snow Monkey: 最近の投稿ウィジェット」は、
Helper::get_template_part( 'template-parts/widget/snow-monkey-posts', 'recent', [ ... ] );
というように、
Helper::get_template_part()
というメソッドでテンプレートを読み込んで表示しているのですが、このメソッドには HTML を書き換えるフィルターフックが仕込んであるので、それを使ってstr_replace()
、preg_replace()
することは可能です。add_filter( 'snow_monkey_template_part_render', function( $html, $slug, $name ) { if ( 'template-parts/widget/snow-monkey-posts' === $slug && 'recent' === $name ) { // ここで書き換えて返す $html = preg_replace( ... ); return $html; } return $html; }, 10, 3 );
置換で済まないレベルでもっとガッツリ変更が必要な場合はまた別の方法があるのでそのときは言ってください。
♥ 0いいねをした人: 居ません2019年9月14日 9:45 AM #27928返信が含まれるトピック: アーカイブページの記事一覧レイアウトのリッチメディアの日付の位置について
すみません、追加で、アーカイブページに表示される日付を投稿日ではなく更新日にすることは可能でしょうか?
下記を貼ってみてください。
add_filter( 'snow_monkey_template_part_render', function( $html, $slug ) { if ( 'template-parts/loop/entry-summary/meta/meta' === $slug ) { return preg_replace( '|<li class="c-meta__item c-meta__item--published">.*?</li>|ms', '<li class="c-meta__item c-meta__item--modified">' . get_the_modified_time( get_option( 'date_format' ) ) . '</li>', $html ); } return $html; }, 10, 2 );
♥ 0いいねをした人: 居ません2019年9月14日 9:44 AM #27927返信が含まれるトピック: アーカイブページの記事一覧レイアウトのリッチメディアの日付の位置について
\Framework\Helper::get_template_part(
の行が(
の部分で切れちゃってるからですね。下記で貼り直してください。add_filter( 'snow_monkey_template_part_render', function( $html, $slug, $name, $vars ) { if ( 'template-parts/loop/entry-summary' === $slug && 'post' === $name ) { if ( 'rich-media' === $vars['_entries_layout'] ) { $html = preg_replace( '|<div class="c-entry-summary__meta">.*?</div>|ms', '', $html ); ob_start(); \Framework\Helper::get_template_part( 'template-parts/loop/entry-summary/meta/meta' ); $meta = ob_get_clean(); $html = str_replace( '<h2 class="c-entry-summary__title">', $meta . '<h2 class="c-entry-summary__title">', $html ); } } return $html; }, 10, 4 );
♥ 0いいねをした人: 居ません2019年9月14日 9:39 AM #27924返信が含まれるトピック: アーカイブページの記事一覧レイアウトのリッチメディアの日付の位置について
再度エラーが出てしまいました、何度もすみませんがご確認お願いします…
wp-content/plugins/my-snow-monkey/my-snow-monkey.php
ファイルの81行目のエラーのため、PHP コードの変更をロールバックしました。修正し、もう一度保存してください。syntax error, unexpected ';', expecting ',' or ')'
念の為、全コード載せときます!
add_filter( 'snow_monkey_template_part_render', function( $html, $slug, $name, $vars ) { if ( 'template-parts/loop/entry-summary' === $slug && 'post' === $name ) { if ( 'rich-media' === $vars['_entries_layout'] ) { $html = preg_replace( '|<div class="c-entry-summary__meta">.*?</div>|ms', '', $html ); ob_start(); \Framework\Helper::get_template_part( $meta = ob_get_clean(); $html = str_replace( '<h2 class="c-entry-summary__title">', $meta . '<h2 class="c-entry-summary__title">', $html ); } } return $html; }, 10, 4 );
♥ 0いいねをした人: 居ません2019年9月13日 11:30 PM #27876返信が含まれるトピック: アーカイブページの記事一覧レイアウトのリッチメディアの日付の位置について
CSS の調整は必要かもしれませんが、とりあえずこんな感じでしょうか。My Snow Monkey プラグインか子テーマの functions.php に下記を追加してみてください。
add_filter( 'snow_monkey_template_part_render', function( $html, $slug, $name, $vars ) { if ( 'template-parts/loop/entry-summary' === $slug && 'post' === $name ) { if ( 'rich-media' === $vars['_entries_layout'] ) { $html = preg_replace( '|<div class="c-entry-summary__meta">.*?</div>|ms', '', $html ); ob_start(); Helper::get_template_part( 'template-parts/loop/entry-summary/meta/meta' ); $meta = ob_get_clean(); $html = str_replace( '<h2 class="c-entry-summary__title">', $meta . '<h2 class="c-entry-summary__title">', $html ); } } return $html; }, 10, 4 );
♥ 0いいねをした人: 居ません2019年9月1日 4:45 PM #26602返信が含まれるトピック: 追尾型バナー設置機能がほしい
特定の1ページのみ、または、特定のカテゴリ・タグのみに表示したい場合は、どのようにコードを記載すればキレイに動作するかご教授頂けますと幸いです。
例えばこんな感じでしょうか。
add_filter( 'snow_monkey_template_part_render', function( $html, $slug ) { // Footer CTA じゃないときは無視 if ( 'footer-cta' !== $slug ) { return $html; } // 以下、Footer CTA の場合 // Post ID が 5 の固定ページの場合は表示 if ( is_page( 5 ) { return $html; } // カテゴリー ID が 6 のカテゴリーページの場合は表示 if ( is_page( 5 ) { return $return; } // それ以外の場合は表示しない return; }, 10, 2 );
下記のページのその他の条件分岐タグがまとめてあるので、いろいろ試してみてください!
カスタマイザーで px 数を入力させる形になっていると、とても使いやすいと思います!
こちら実装できそうか調査すすめますね。
♥ 0いいねをした人: 居ません2019年8月31日 10:57 AM #26518返信が含まれるトピック: 追尾型バナー設置機能がほしい
1.ページごとに表示・非表示設定
ページごとに設定を設けるのは煩雑になりそうなので、GUI をつくるのはどうかなと思いますが、現状でもコードで出し分けは可能です。例えば下記のコードだと、ID が5の固定ページの場合は表示しない、となります。
add_filter( 'snow_monkey_template_part_render', function( $html, $slug ) { // Footer CTA じゃないときは無視 if ( 'footer-cta' !== $slug ) { return $html; } // 以下、Footer CTA の場合 // Post ID が 5 の固定ページの場合は何も表示しない if ( is_page( 5 ) ) { return; } return $html; }, 10, 2 );
2.追尾バナーを複数作成
これはちょっと現状の仕組みだと難しいですね…。
表示開始位置を遅らせる
これは、できそう、かつあったほうが良さそうなので実装したいなと思うのですが、どうやって指定させてら良いのか迷いますね…。「ページ内の最初のh2」としちゃうとh2が無いページだと CTA が表示されない、とかなっちゃうので、例えば1000pxスクロールしたら、とかならカスタマイザーで px 数を入力させる形にできるかなと。
♥ 0いいねをした人: 居ません2019年8月28日 1:02 PM #26332返信が含まれるトピック: パンくず部分を帯状にするには?
例えばこんな感じはどうでしょうか?
PHP
add_filter( 'snow_monkey_template_part_render', function( $html, $slug ) { if ( 'template-parts/common/breadcrumbs' !== $slug ) { return $html; } return '<div class="p-breadcrumbs-wrapper"><div class="c-container">' . $html . '</div></div>'; }, 10, 2 );
CSS
.p-breadcrumbs-wrapper { margin: 0 calc(50% - 50vw); background-color: #f5f5f5; padding: .5em; } .p-breadcrumbs-wrapper .c-container { padding-right: 1.86957rem; padding-left: 1.86957rem; } @media (min-width: 40em) { .p-breadcrumbs-wrapper .c-container { padding-right: calc(1.86957rem + env(safe-area-inset-right)); padding-left: calc(1.86957rem + env(safe-area-inset-left)); } } .p-breadcrumbs-wrapper .c-breadcrumbs { margin: 0 !important; }
♥ 0いいねをした人: 居ません2019年8月21日 1:02 PM #25767返信が含まれるトピック: マルチサイトの時のヘッダ
@ケミさん
グローバル変数を使うよりこちらのほうが良いかも(あと、$html
は引数から渡ってくるのでob_start()
はしなくて大丈夫だと思います)。add_filter( 'snow_monkey_template_part_render', function( $html, $slug ) { $blog_id = get_current_blog_id(); if ( 'template-parts/header/1row' === $slug ) { if ( 1 === $blog_id ) { // 置換 $html = str_replace( '...', '...', $html ); } } return $html; }, 10, 2 );
♥ 0いいねをした人: 居ません2019年8月21日 12:31 PM #25761返信が含まれるトピック: マルチサイトの時のヘッダ
マルチサイトでのサイト毎の分岐方法は下記のサイトが参考になると思います。
もし、子テーマでされる場合であれば
template-parts/header/1row.php
の変更したい箇所に、それぞれの分岐処理を挟めば良いと思います。プラグインでされる場合であれば
global $current_blog; $blog_id = $current_blog->blog_id; add_filter( 'snow_monkey_template_part_render', function( $html, $slug, $name, $vars ) { if ( $slug === 'template-parts/header/1row' ) { ob_start(); \Framework\Helper::get_template_part( 'template-parts/header/1row', $name, $vars ); $html = ob_get_clean(); if ( 1 === $blog_id ) { // 置換したいhtml内容 } } return $html; }, 10, 4 );
と言う感じで、こちらも分岐でそれぞれの置換をやる形でどうでしょうか?
または分岐で読み込むテンプレートを変更するのも良いと思います。♥ 0いいねをした人: 居ません2019年8月19日 12:32 PM #25576返信が含まれるトピック: Snow Monkey Blocksのカスタマイズに関して
> あ、「li をカスタマイズ」と書いていたのでスルーしましたが、li の中の .c-entry-summary コンポーネントは Helper::get_template_part() で呼ばれているのでフック通ります。
あ、なるほど。
> あーこれはバグかも…です。
一応調査っすね。再現などで解らない事あれば聞いてください。
widgets/snow-monkey-posts.php
のHelper::get_template_part
では正しく指定されている(値も正常っぽい)のに
その後のsnow_monkey_template_part_render
だと、$vars['_excerpt_length'] = NULL
のみになってしまうっぽいって感じです。♥ 0いいねをした人: 居ません2019年8月19日 10:39 AM #25550返信が含まれるトピック: Snow Monkey Blocksのカスタマイズに関して
ちょっと確認したかったので再度トピックオープンしました。
その後にパッチ的に
snow_monkey_template_part_render
を通すように改修できないこともないとは思うのですが、結局他のブロックもsnow_monkey_template_part_render
を通るわけではない調べてみたらウィジェットでもrenderフックは通ってるようでした…。
ただ、通り方がちょっと特殊な感じで通ってるのでややこしかった…と。add_filter( 'snow_monkey_template_part_render', function ( $html, $slug, $name, $vars ) { if ( $slug === 'template-parts/loop/entry-summary' ) { if ( $vars['_entries_layout'] === 'rich-media' ) { ob_start(); <strong>ほにゃらら</strong> $html = ob_get_clean(); } } return $html; }, 10, 4 );
と書いて、最新の投稿ブロックを実行すると
$vars['_entries_layout']
が無いと言うNoticeが出た状態で処理されているっぽいです。
$vars
に渡されてないだけでrenderフックは通る結果になるので。ウィジェットを使わない場合は正しくvarsに代入されているので、ウィジェット時に渡されないのを注意すると言うのがちょっと使い方として…な所もあるので、もうちょいとこちらでも考えてみようかと思います。(そもそも使い方が悪い気もしてる)
一応、報告まで。♥ 0いいねをした人: 居ません2019年8月18日 11:08 AM #25421返信が含まれるトピック: Snow Monkey Blocksのカスタマイズに関して
inc2734_
の方のフックでしたかー(汗)> 結局他のブロックも snow_monkey_template_part_render を通るわけではない
確かに…微妙と言うか色々面倒な事になりますね。了解です。
使いたい部分で
inc2734_wp_awesome_widgets_render_widget
で適度にカスタマイズをするか通すようにするとかの方が楽かもって感じに思えますし、ちょっとそれで試してみてカスタマイズで質問が出たらまた別トピックで聞きますー。♥ 0いいねをした人: 居ません -
投稿者検索結果