特定のカテゴリーやタグのアーカイブページでアイキャッチ画像の位置を変えたい

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

    【お使いの Snow Monkey のバージョン】16.1.0
    【お使いの Snow Monkey Blocks のバージョン】14.1.0
    【お使いの Snow Monkey Editor のバージョン】7.0.0
    【お使いのブラウザ】chrome

    ### 実現したいこと

    カスタマイザー
    └デザイン
    └アーカイブ設定

    から、アイキャッチ画像の位置を「ページヘッダーの上にタイトルを表示」にしているが、一部のカテゴリーのみアイキャッチ画像の位置を「なし」にしたい(カテゴリーのgalleryblogと全てのタグ)

    ### 発生している問題
    カスタマイザーでは特定のアーカイブページを指定して、アイキャッチ画像の位置を変えることはできない。

    ### 試したこと

    .category-5 .c-page-header,.tag .c-page-header{
      display: none;
    }

    の様に追加CSSを書くことでアイキャッチ画像は消せるのですが、当然ページタイトルも一緒に消えてしまいます。ページタイトルを残してアイキャッチ画像を消すには、my-snow-monkeyadd_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;
    }

    ご教授いただければと思います。宜しくお願いいたします。

    0
    Who liked: No user
    #99572
    arata
    参加者
    5

    すみません。

    【お使いの Snow Monkey のバージョン】16.1.1

    でした。

    0
    Who liked: No user
    #99576
    Olein_jp
    参加者
    565

    PHP がわからないと求められているカスタマイズは実現が難しいと思います。というのも、アドバイスを差し上げるにしても、PHP を含む話題になるからです。ですので、まずは PHP の学習から始められるのも良いかもしれません。

    1
    Who liked:
    #99584
    Olein_jp
    参加者
    565

    トピックに掲載されているコードは、箇所としてはちょっと違うような気がするので調べてみました。以下のトピックが役立つかと思います。

    こちら snow-monkey/templates/view/content.php というファイルの中を見ると、_display_eyecatch というのがあるので、こちらを辿っていって条件分岐させることで実現できそうな気がします。(PHPの理解は必要になるかと思います…

    0
    Who liked: No user
    #99589
    アバター画像キタジマ タカシ
    参加者
    2421

    一応コード的には次のような感じでカスタマイズできます。

    add_filter(
    	'theme_mod_archive-eyecatch', // カスタマイザーの設定値「archive-eyecatch」をフィルターする
    	function( $eyecatch ) {
    		if ( is_category( 'uncategorized' ) ) { // カテゴリーアーカイブ「uncategorized」のとき
    			return 'none'; // 設定値「none」を返す
    		}
    		return $eyecatch; // それ以外は何もせずに返す
    	}
    );

    実際これやろうとすると PHP の(文法の)知識はもちろんですが、WordPerss のフィルターフックの仕組み、Snow Monkey の知識(アイキャッチ画像の位置の設定・設定値の名前)も必要になります。とりあえずは上記のコードをコピペして必要に応じて書き換えれば動くと思いますが、なぜこのコードで動くのかの理屈まで考えながらやってみるとより理解が深まって良いと思います。

    2
    Who liked:
    #99633
    arata
    参加者
    5

    Olein様、キタジマ様

     

    キタジマ様のコードを元に以下で特定のカテゴリーと全てのタグで理想の表示をさせることができました。ありがとうございます。

    // 特定のアーカイブページのみアイキャッチ画像を「なし」にする
    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 というファイルにあるというのはどの様にすればわかるのでしょうか?

    質問場所が間違えているかもしれませんが、教えていただけると幸いです。

    0
    Who liked: No user
    #99648
    Olein_jp
    参加者
    565

    僕の見つけ方になるので、人が変わると若干違うところがあるかもしれませんが。

    例えば本件であれば、「カスタマイザー→デザイン→(アーカイブを表示して)アーカイブ設定」のところで設定できる項目ということは、既にご存知かと思います。

    その場合、そのカスタマイザーのパネルを提供しているファイルを探すことで、そこで設定しているアイキャッチ部分の情報を保存している箇所を特定することができるかと思います。

    この場合だと、テーマファイル内の 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 というフックということです。

    こうやってなんとなく該当箇所を絞っていく流れが僕のやり方になります。他にも人によって違ってくることはあるかと思います。色々とソースコードを読んでみるということに尽きますね。

    僕も本トピックで勉強になりました。ありがとうございました。

    2
    Who liked:
    #99680
    arata
    参加者
    5

    Olein_jp様

    ご丁寧な解説ありがとうどざいます。非常に分かりやすく勉強になりました。

    ・変更したい場所を定義ているファイル、コードを探す

    ・それを変更できるフックを知る

    これができる様にWordPressやsnow moneky をもっと触っていこうと思います。

    下記のOlein_jp様のサイトや公式のhooks一覧には載っていない、フックも存在するのですね。理解できる様に励みます。

    1
    Who liked:
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • トピック「特定のカテゴリーやタグのアーカイブページでアイキャッチ画像の位置を変えたい」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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