https://www.with-ac.com/column/b-20230802-01/
以下のコードを my-snow-monkey.php に追加することで、特定のタームのリンクと仮でカスタム投稿タイプのアーカイブ名「column」を追加することができました。
■変更前
HOME > ウィズ・ユーコラム > [承認待]発達障害の子どもたちと家族への支援の必要性
■変更後
HOME > ウィズ・ユーコラム > column > [承認待]発達障害の子どもたちと家族への支援の必要性
記事のカテゴリー名とそのリンクに変更したいのですが、解決策を教えていただけませんでしょうか。
よろしくお願いいたします。
add_filter(
'snow_monkey_breadcrumbs',
function( $items ) {
if ( is_singular('column') ) {
$items[ count( $items ) - 1 ] = [
'link' => get_term_link(54),
'title' => get_post_type(),
];
$items[ count( $items ) - 0 ] = [
'link' => '',
'title' => get_the_title(),
];
}
return $items;
}
);
キタジマさん
ありがとうございます。
キタジマさんのコードを入力したところ、
「トップページ>What’s News(任意の固定ページ)>全ての記事一覧(親カテゴリー)>お知らせ(子カテゴリー)>投稿ページ」と理想のパンくずになったのですが、
そのまま子カテゴリーページに飛ぶと、
「トップページ>全ての記事一覧(親カテゴリー)>お知らせ(子カテゴリー)」のようになってしまい任意の固定ページが外れてしまいました。
なので、次のようにしたらパンくずは全て理想のようなカタチになったのですが、コードの書き方はあっていますか?
add_filter(
'snow_monkey_breadcrumbs',
function( $breadcrumbs ) {
// カテゴリーアーカイブのとき or 投稿のとき
if ( is_category( 69 ) || is_category( 70 ) || is_category( 71 ) || is_category( 72 )|| is_single() ) {
// ID が 2 の固定ページを取得
$page = get_page( 2991 );
<blockquote>// 配列の1の場所に上記の固定ページの情報を追加
array_splice (
$breadcrumbs,
1,
0,
[
[
'title' => get_the_title( $page->ID ),
'permalink' => get_permalink( $page->ID ),
],
]
);
}
return $breadcrumbs;
}
);
念のため、各ページIDです。
ただ、上記のコードでパンくずは理想の状態で表示されるのですが、
任意の固定ページに飛ぼうとしてもリンクが外れているのか、ページを移動することができません。
この場合どうすればいいでしょうか?
任意の固定ページにカーソルを合わせると、表示しているページと同じスラッグが表示されています。
あ、そうか、先のコードだとカテゴリーアーカイブのときしかカスタマイズしていないので投稿の場合も含めるように条件を修正してください。
add_filter(
'snow_monkey_breadcrumbs',
function( $breadcrumbs ) {
// カテゴリーアーカイブのとき or 投稿のとき
if ( is_category( 69 ) || is_single() ) {
// ID が 2 の固定ページを取得
$page = get_page( 2991 );
// 配列の1の場所に上記の固定ページの情報を追加
array_splice (
$breadcrumbs,
1,
0,
[
[
'title' => get_the_title( $page->ID ),
'permalink' => get_permalink( $page->ID ),
],
]
);
}
return $breadcrumbs;
}
);
キタジマさん
すみません、確認遅くなりました。
ありがとうございます!
add_filter(
'snow_monkey_breadcrumbs',
function( $breadcrumbs ) {
// カテゴリーアーカイブのとき
if ( is_category( 69 ) ) {
// ID が 2 の固定ページを取得
$page = get_page( 2991 );
// 配列の1の場所に上記の固定ページの情報を追加
array_splice (
$breadcrumbs,
1,
0,
[
[
'title' => get_the_title( $page->ID ),
'permalink' => get_permalink( $page->ID ),
],
]
);
}
return $breadcrumbs;
}
);
このようにコードを入力したところ、
「トップページ>What’s News(任意の固定ページ)>全ての記事(親カテゴリー)」と理想のように作ることができました!
ですが、投稿ページに飛ぶと、
「トップページ>全ての記事一覧(親カテゴリー)>お知らせ(子カテゴリー)>投稿ページ」となってしまい任意の固定ページが外れてしまいました。
このような場合、どうすればいいでしょうか…?
これでどうですかね?
add_filter(
'snow_monkey_breadcrumbs',
function( $breadcrumbs ) {
// カテゴリーアーカイブのとき
if ( is_category() ) {
// ID が 2 の固定ページを取得
$page = get_page( 2 );
// 配列の1の場所に上記の固定ページの情報を追加
array_splice (
$breadcrumbs,
1,
0,
[
[
'title' => get_the_title( $page->ID ),
'permalink' => get_permalink( $page->ID ),
],
]
);
}
return $breadcrumbs;
}
);
【お使いの Snow Monkey のバージョン】15.17.0
【お使いの Snow Monkey Blocks のバージョン】13.7.1
【お使いの Snow Monkey Editor のバージョン】6.2.1
【お使いのブラウザ】Chrome
【当該サイトのURL】ローカルのため無し
### 実現したいこと
パンくずリストを、「フロントページ>固定ページ>カテゴリーページ」にしたい。
### 発生している問題
現在は、「フロントページ>カテゴリーページ」になっています。
### 試したこと
いつもお世話になっております。
度々質問失礼いたします。
上記のようにパンくずリストをカスタマイズしたいのですが、うまくできません。
こちらの記事を参考にしたのですが、わからず…
add_filter(
'snow_monkey_breadcrumbs',
function( $items ) {
if ( is_post_type_archive('category_archive') ) {
//フロントページ情報の取得
$f_pageID = get_option( 'page_on_front' );
$frontPage = get_post( $f_pageID );
$items[ count( $items ) - 2 ] = [
'link' => esc_html(home_url()),
'title' => esc_html($frontPage->post_title),
];
//固定ページA情報の取得
$testa_Page_permalink = get_permalink('http://rayssite.local/news-2/');
$testa_Page_title = get_the_title('What’s News');
$items[ count( $items ) - 1 ] = [
'link' => esc_html($testa_Page_permalink),
'title' => esc_html($testa_Page_title),
];
$items[ count( $items ) - 0 ] = [
'link' => 'http://rayssite.local/category/all/',
'title' => esc_html(get_post_type_object(get_post_type())->label),
];
}
return $items;
}
);
まだまだコード理解が追いつかずに、ご迷惑をおかけします…
よろしくお願いいたします。
My Snow Monkey を使っていますが、そこにローディング画面は何も設置していません。
作成しているコードは、ここにあるものです。
$theme = wp_get_theme( get_template() );
if ( ‘snow-monkey’ !== $theme->template && ‘snow-monkey/resources’ !== $theme->template ) {
return;
}
/**
* Snow Monkey MY snowmonkey追加プラグイン
*/
add_action(
‘snow_monkey_prepend_body’,
function() {
?>
<div class=”c-page-effect” data-page-effect=”fadein” aria-hidden=”false”>
<div class=”c-page-effect__item”>
<div class=”c-circle-spinner”></div>
</div>
</div>
<?php
}
);
// 実際のページ用の CSS 読み込み
add_action(
‘wp_enqueue_scripts’,
function() {
wp_enqueue_style(
‘my-snow-monkey’,
untrailingslashit( plugin_dir_url( __FILE__ ) ) . ‘/style.css’,
[ Framework\Helper::get_main_style_handle() ],
filemtime( plugin_dir_path( __FILE__ ) )
);
}
);
// エディター用の CSS 読み込み
add_action(
‘after_setup_theme’,
function() {
add_editor_style( ‘/../../plugins/my-snow-monkey/style.css’ );
}
);
//パンくずリストを設定
add_filter(
‘snow_monkey_breadcrumbs’,
function( $breadcrumbs ) {
if ( isset( $breadcrumbs[0] ) ) {
$breadcrumbs[0] = [
‘title’ => ‘ホーム’,
‘link’ => $breadcrumbs[0][‘link’],
];
}
return $breadcrumbs;
}
);
// googlefont 読み込み
add_action( ‘wp_head’, function() {
?>
<link href = “https://fonts.googleapis.com/css2?family = Roboto:wght @ 700& display ==swap&text=0123” rel = “stylesheet”>
<?php
} );
// 目次 読み込み
add_filter(
‘inc2734_wp_contents_outline_args’,
function( $attributes ) {
$attributes[‘selector’] = implode(
‘,’,
[
$attributes[‘selector’],
‘.wp-block-column’,
]
);
return $attributes;
}
);
単純に戻るボタンを押すとの状態になりクルクルと回って表示されないようです。
他の原因ですかね。
【対応の Snow Monkey のバージョン】v11.0.9
===
WooCommerce の設定(管理画面内、 WooCommerce > 設定 > 商品 > ショップページ
)で、ショップページを割り当てている場合に、
商品詳細ページのパンくずを
ホーム > ショップ > 商品カテゴリー > 商品名
とする方法。
add_filter(
'snow_monkey_breadcrumbs',
function( $_items ) {
if ( class_exists( '\woocommerce' ) && is_product() ) {
$_shop_page_id = get_option( 'woocommerce_shop_page_id' );
if ( ! empty( $_shop_page_id ) ) {
$_add_item = [
[
'link' => get_permalink( $_shop_page_id ),
'title' => get_the_title( $_shop_page_id ),
]
];
array_splice( $_items, 1, 0, $_add_item );
}
}
return $_items;
}
);
下記のコードは、検索一覧のコンテンツ部分を差し替える一例です。ご参考にどうぞ。
add_filter(
'snow_monkey_template_part_render',
function( $html, $slug, $name, $vars ) {
// 検索ページの時に差し替える為の条件式
if ( is_search() && 'templates/view/archive' === $slug && 'search' === $name ) {
// ここから参考ページのように設定
if ( empty( get_search_query() ) ) { // 検索ワードが空なら
$html = '<div class="c-entry"><p>検索キーワードが未入力です。</div>'; // 表示するhtmlを代入
}
}
return $html;
}
,
10,
4
);
サイドバーなども表示されなくなるかもしれません。
その際は、htmlをDOM操作する形で適度に書き換えるのがベストと思います。
また、検索結果と言うのがページタイトルとパンくずでふさわしくない形になるので、それらも差し替えた方が良いのであれば、下記のコードを参考にしてください。
add_filter(
'document_title_parts',
function($title_parts) {
if ( is_search() && empty( get_search_query() ) ) {
$title_parts['title'] = '検索キーワードが未入力です';// ページタイトルを変える
}
return $title_parts;
},
9,
1
);
add_filter( 'snow_monkey_breadcrumbs',
function( $items ) {
if ( is_search() && empty( get_search_query() ) ) {
$items[count( $items ) - 1]['title'] = '検索キーワードが未入力です';
}
return $items;
},
9,
1
);
どんどん、使いやすくなってきて使っていて楽しいです!
ありがとうございます^^
パンくずリストを
ホーム > アクセス としたいのですが、
これでどうでしょう?
add_filter(
'snow_monkey_breadcrumbs',
function( $breadcrumbs ) {
if ( isset( $breadcrumbs[0] ) ) {
$breadcrumbs[0] = [
'title' => 'ホーム',
'link' => $breadcrumbs[0]['link'],
];
}
return $breadcrumbs;
}
);
パンくずはarray(配列)になってるんで、配列の先頭に加えればいけます。
add_filter(
'snow_monkey_breadcrumbs',
function ( $items ) {
$first_item = [
'link' => esc_url( 'https://ホームのURLをここに入れる' ), // リンクのURL。esc_urlは念のため。しなくても良い
'title' => 'ホーム', // パンくずのアイテムの表示文字列
];
array_unshift( $items, $first_item );
return $items;
}
);
間に挟む場合なども一応書いておきます。
(過去にうちのサイトに書いてたものをそのまま持ってきただけ)
// 2番目のパンくずアイテムに加える
$add_item = [
[
'link' => 'URLをここに書く',
'title' => '表示したいタイトルをここに書く',
]
];
array_splice( $items, 1, 0, $add_item ); // 第二引数に場所。0から始まるので1が2番目となります。第3引数は 0固定。第4引数に追加する配列を渡します。
// パンくずのアイテムの削除
array_splice( $items, 1, 1 ); // 第2引数が場所。0から始まるので1だと2番目が消えます。第3引数は削除する数です。1つ消す場合は1を。
【Snow Monkey のバージョン】v10.2.0
【WooCommerce のバージョン】v4.0.1
===
マイアカウントのダッシュボードのみホーム > マイアカウント
となりますが、
その他のメニュー表示時はホーム > マイアカウント > ダウンロード
などの対応した構造にします。
add_filter(
'snow_monkey_breadcrumbs',
function( $items ) {
if ( class_exists( '\woocommerce' ) && is_account_page() ) {
add_filter( 'the_title', 'wc_page_endpoint_title' );
$endpoint = WC()->query->get_current_endpoint();
if ( ! empty( $endpoint ) && 'dashboard' !== $endpoint ) {
$items[] = [
'link' => esc_url( wc_get_account_endpoint_url( $endpoint ) ),
'title' => get_the_title(),
];
}
}
return $items;
}
);