投稿関連ページの、グローバルナビゲーション(PC用)、 ドロワーナビゲーション(モバイル用)、ロゴを差し替えたい

0
いいねをした人: 居ません
  • このトピックには4件の返信、2人の参加者があり、最後にHiROEにより4年、 2ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #54014
    HiROE
    参加者
    46

    トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。

    【お使いの Snow Monkey のバージョン】10.10.7
    【お使いのブラウザ】Chrome,safari,firefox
    【当該サイトのURL】ローカルのテスト環境で作成中
    ===

    もし下記のようなカスタマイズが可能ならば、実現したいと思っています。

    【サイト設定の状態】
    (1)ホームページ設定にて、トップページは固定ページを割り当てて、投稿ページトップは「https://xxxxx.com/blog/」となるように設定。

    (2)プラグイン CPT UI にて、カスタムポストタイプ、カスタムタクソノミーを設定。製品情報をアップしていくのに利用する。

    (3)投稿のパーマリンク設定
    カスタム構造して、「/blog/%postname%/」と入力

    【やりたいこと】
    下記のページの場合に、通常設定(管理画面・カスタマイザーでの設定)とは別の「グローバルナビゲーション(PC用)、 ドロワーナビゲーション(モバイル用)、ロゴ」を表示したい(差し替えたい)と思っています。

    (該当ページ)
    ・投稿ページトップ(アーカイブページ) https://xxxxx.com/blog/
    ・投稿の個別ページ https://xxxxx.com/blog/記事のスラッグ/
    ・カテゴリ、タグなどのアーカイブページ https://xxxxx.com/blog/category/カテゴリー名スラッグ/、https://xxxxx.com/blog/tag/タグ名スラッグ/

    投稿に関連するページです。


    管理画面 → メニュー にて2つのメニューを作成。1つは通常どおり、グローバルナビゲーション(PC用)、 ドロワーナビゲーション(モバイル用)にチェックを入れる。もう1つは差し替え用のメニューとしてつくり、チェックは入れない。

    ※ロゴ画像も2種類用意。1つはカスタマイザーにて設定。もう1つは差し替え用として、メディアにアップロードしておく。

    【カスタマイズしたい理由】
    トップページ、固定ページ、カスタムポストタイプ関連のページは、コーポレートサイトとして運用し、投稿ページはオウンドメディア(ブログ)として運用したい。

    そこで、オウンドメディア(ブログ)部分は、ブログのカテゴリなどをグローバルメニューに表示して、ロゴも別のものを表示したい。

    以上、

    説明が分かりにくいかもしれませんが、もしできそうならば、カスタマイズ方法をご教示いただけたら嬉しいです!

    0
    いいねをした人: 居ません
    #54097
    アバター画像キタジマ タカシ
    参加者
    2371

    下記のような感じで差し替えできるとは思いますが、複雑になるので、個人的にはそれぞれ別に WordPress を立てたほうが良いんじゃないかなぁと感じました。

    メニューの差し替え

    add_filter(
    	'wp_nav_menu_args',
    	function( $args ) {
    		if ( is_home() ) { // 差し替え条件
    			if ('global-nav' === $args['theme_location']) { // どのナビゲーションを差し替えるか
    				$args['menu'] = 'Testing Menu'; // メニュー管理画面で入力した名前
    			}
    		}
    		return $args;
    	}
    );

    ロゴ差し替え

    add_filter(
    	'get_custom_logo',
    	function( $html ) {
    		if ( is_home() ) { // 差し替え条件
    			$html = preg_replace(
    				'|<img .+? />|',
    				'<img class="custom-logo" src="" />', // 表示したい img タグ
    				$html
    			);
    		}
    		return $html;
    	}
    );
    0
    いいねをした人: 居ません
    #54168
    HiROE
    参加者
    46

    ご回答ありがとうございます。

    グローバルメニューとドロワーメニューについては、教えていただいたコードをもとに、下記のコードを書いたら無理やりながら差し替えることができました。(書き方がおかしいとは思いますが・・・)

    /**
     * 投稿ページ関連(投稿ページトップ、カテゴリーアーカイブ・タグアーカイブ・個別記事ページ)のメニューを差し替える
     */
    add_filter(
    	'wp_nav_menu_args',
    	function( $args ) {
    		if ( is_single() || is_home() || is_category() || is_tag()) { // 差し替え条件
    			if ('global-nav' === $args['theme_location'] || 'drawer-nav' === $args['theme_location']) { // どのナビゲーションを差し替えるか
    				$args['menu'] = 'hedder-sub-navi'; // メニュー管理画面で入力した名前
    			}
    		}
    		return $args;
    	}
    );
    
    add_filter(//上記条件では個別記事にカスタム投稿ページが含まれるので、カスタム投稿ページでは元に戻す
    	'wp_nav_menu_args',
    	function( $args ) {
    		if ( get_post_type() === 'product') { // 差し替え条件 (カスタムポストタイプがproductのとき)
    			if ('global-nav' === $args['theme_location'] || 'drawer-nav' === $args['theme_location']) { // どのナビゲーションを差し替えるか
    				$args['menu'] = 'gloval-navi'; // メニュー管理画面で入力した名前
    			}
    		}
    		return $args;
    	}
    );
    

    ロゴについては、差し替えはできたものの、それぞれのロゴのサイズ調整が難しいなぁというのもありまして、悩ましく思っております ^^;(笑)

    メニューの差し替えについてもメニューのキャッシュを使うと、うまく動かないなどあるので、確かにキタジマさんのいう通り、複雑な感じですね・・・

    別のワードプレスを立てるか、オウンドメディア(ブログ)ページのカテゴリ表示などの見せ方でより良い方法がないかちょっと考えてみることとします!

    ちなみに今回メニューの出し分けで条件を書くときに、is_single()に通常の投稿と、カスタム投稿の両方が含まれてしまうようだったので、あとからカスタム投稿タイプだけ除くような処理にしました。
    (いろいろと調べたのですが、よく分からず・・・)

    なんか無理やりな書き方だな・・・と思ったのですが、今回の条件を1つの条件式だけで書く方法はあるのでしょうか?

    Snow Monkey とは関係ない質問で申し訳ありません・・・

    0
    いいねをした人: 居ません
    #54194
    アバター画像キタジマ タカシ
    参加者
    2371

    メニューの差し替えについてもメニューのキャッシュを使うと、うまく動かないなどあるので、確かにキタジマさんのいう通り、複雑な感じですね・・・

    一度表示したメニューがキャッシュされるので、次回表示時からはフックを通らなくなるんですよね。

    ちなみに今回メニューの出し分けで条件を書くときに、is_single()に通常の投稿と、カスタム投稿の両方が含まれてしまうようだったので、あとからカスタム投稿タイプだけ除くような処理にしました。

    is_single() じゃなくて is_singular( 'product' ) のようにすると product の個別ページに限定できます!

    0
    いいねをした人: 居ません
    #54231
    HiROE
    参加者
    46

    is_single() じゃなくて is_singular( ‘product’ ) のようにすると product の個別ページに限定できます!

    なるほど。いろいろな書き方がありますね〜。いろいろ調べてチャレンジしてみます。

    方法は理解しましたので、このトピックは閉じておきます。
    ありがとうございました!

    1
    いいねをした人: 居ません
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • トピック「投稿関連ページの、グローバルナビゲーション(PC用)、 ドロワーナビゲーション(モバイル用)、ロゴを差し替えたい」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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