-
投稿者投稿
-
2022年2月21日 10:42 PM #99571
【お使いの Snow Monkey のバージョン】16.1.0
【お使いの Snow Monkey Blocks のバージョン】14.1.0
【お使いの Snow Monkey Editor のバージョン】7.0.0
【お使いのブラウザ】chrome### 実現したいこと
カスタマイザー └デザイン └アーカイブ設定
から、アイキャッチ画像の位置を「ページヘッダーの上にタイトルを表示」にしているが、一部のカテゴリーのみアイキャッチ画像の位置を「なし」にしたい(カテゴリーの
gallery
、blog
と全てのタグ)### 発生している問題
カスタマイザーでは特定のアーカイブページを指定して、アイキャッチ画像の位置を変えることはできない。### 試したこと
.category-5 .c-page-header,.tag .c-page-header{ display: none; }
の様に追加CSSを書くことでアイキャッチ画像は消せるのですが、当然ページタイトルも一緒に消えてしまいます。ページタイトルを残してアイキャッチ画像を消すには、
my-snow-monkey
でadd_filter
を使い解決できる気がするのですが、方法が分かりません。フォーラムにて検索しましたが、探せませんでした。
↓ この辺りをいじるのかなと予想はたつのですが、phpが分かりません。
$eyecatch_position_choices = Helper::eyecatch_position_choices(); unset( $eyecatch_position_choices['content-top'] ); Framework::control( 'select', 'bbpress-archive-eyecatch', [ 'label' => __( 'Featured image position', 'snow-monkey' ), 'description' => sprintf( /* translators: 1: bbPress archive */ __( 'Select how to display the featured image in %1$s page.', 'snow-monkey' ), __( 'bbPress archive', 'snow-monkey' ) ), 'priority' => 120, 'default' => 'none', 'choices' => $eyecatch_position_choices, ] ); if ( ! is_customize_preview() ) { return; }
ご教授いただければと思います。宜しくお願いいたします。
♥ 0Who liked: No user2022年2月21日 10:44 PM #99572すみません。
【お使いの Snow Monkey のバージョン】16.1.1
でした。
♥ 0Who liked: No user2022年2月21日 11:40 PM #995762022年2月22日 7:55 AM #99584トピックに掲載されているコードは、箇所としてはちょっと違うような気がするので調べてみました。以下のトピックが役立つかと思います。
こちら
snow-monkey/templates/view/content.php
というファイルの中を見ると、_display_eyecatch
というのがあるので、こちらを辿っていって条件分岐させることで実現できそうな気がします。(PHPの理解は必要になるかと思います…♥ 0Who liked: No user2022年2月22日 8:27 AM #99589一応コード的には次のような感じでカスタマイズできます。
add_filter( 'theme_mod_archive-eyecatch', // カスタマイザーの設定値「archive-eyecatch」をフィルターする function( $eyecatch ) { if ( is_category( 'uncategorized' ) ) { // カテゴリーアーカイブ「uncategorized」のとき return 'none'; // 設定値「none」を返す } return $eyecatch; // それ以外は何もせずに返す } );
実際これやろうとすると PHP の(文法の)知識はもちろんですが、WordPerss のフィルターフックの仕組み、Snow Monkey の知識(アイキャッチ画像の位置の設定・設定値の名前)も必要になります。とりあえずは上記のコードをコピペして必要に応じて書き換えれば動くと思いますが、なぜこのコードで動くのかの理屈まで考えながらやってみるとより理解が深まって良いと思います。
2022年2月22日 7:08 PM #99633Olein様、キタジマ様
キタジマ様のコードを元に以下で特定のカテゴリーと全てのタグで理想の表示をさせることができました。ありがとうございます。
// 特定のアーカイブページのみアイキャッチ画像を「なし」にする
add_filter(
‘theme_mod_archive-eyecatch’, // カスタマイザーの設定値「archive-eyecatch」をフィルターする
function( $eyecatch ) {
if ( is_category( ‘blog’ ) ) { // カテゴリーアーカイブ「uncategorized」のとき
return ‘none’; // 設定値「none」を返す
}elseif (is_category(‘news’)) {
return ‘none’;
}
elseif (is_tag()) {
return ‘none’;
}
return $eyecatch; // それ以外は何もせずに返す
}
);PHPは基礎を学び終えたところで、現在WordPressの学習をしている最中の身です。
こちらを頼らずに実装できる様になりたいと思っているのですが、
‘theme_mod_archive-eyecatch’やこれが、snow-monkey/templates/view/content.php というファイルにあるというのはどの様にすればわかるのでしょうか?
質問場所が間違えているかもしれませんが、教えていただけると幸いです。
♥ 0Who liked: No user2022年2月22日 8:49 PM #99648僕の見つけ方になるので、人が変わると若干違うところがあるかもしれませんが。
例えば本件であれば、「カスタマイザー→デザイン→(アーカイブを表示して)アーカイブ設定」のところで設定できる項目ということは、既にご存知かと思います。
その場合、そのカスタマイザーのパネルを提供しているファイルを探すことで、そこで設定しているアイキャッチ部分の情報を保存している箇所を特定することができるかと思います。
この場合だと、テーマファイル内の
snow-monkey/app/customizer/design/sections/archive/controls/eyecatch.php
となります。まずこの推測をするためには、Snow Monkey ではなく WordPress においてどのようにカスタマイザーを作ることができるのかという仕組みを知っておくととてもスムーズかと思います。
しかし、Snow Monkey のカスタマイザーはキタジマさんが独自に用意しているフレームワークを利用して構築されているので、そちらへの理解もあると良いでしょう。
すると、このファイルの中のコントローラーで定めている値がなんとなく、
$control = Framework::get_control( 'archive-eyecatch' );
ここら辺っぽいぞとなってきます。
そして、本件で僕も初めて知ったのですが、カスタマイザーで定めている値に対してフックをかけられるそうです。それが、
theme_mod_archive-eyecatch
というフックということです。こうやってなんとなく該当箇所を絞っていく流れが僕のやり方になります。他にも人によって違ってくることはあるかと思います。色々とソースコードを読んでみるということに尽きますね。
僕も本トピックで勉強になりました。ありがとうございました。
2022年2月23日 11:59 AM #99680Olein_jp様
ご丁寧な解説ありがとうどざいます。非常に分かりやすく勉強になりました。
・変更したい場所を定義ているファイル、コードを探す
・それを変更できるフックを知る
これができる様にWordPressやsnow moneky をもっと触っていこうと思います。
下記のOlein_jp様のサイトや公式のhooks一覧には載っていない、フックも存在するのですね。理解できる様に励みます。
-
投稿者投稿
- トピック「特定のカテゴリーやタグのアーカイブページでアイキャッチ画像の位置を変えたい」には新しい返信をつけることはできません。