デフォルトのYoast SEOブレッドクラムのリンクを変更しようとしています。
現在のブレッドクラムは
Home / Projects / My Pretty Project
そして、「プロジェクト」とそのリンクを「ケーススタディ:
Home / Case Studies / My Pretty Project
これは、私がwpseo_breadcrumb_outputフックを使用して動作しようとしているものです:
add_filter( 'wpseo_breadcrumb_output', 'custom_wpseo_breadcrumb_output' );
function custom_wpseo_breadcrumb_output( $output ){
if( is_single () ){
$from = '/projects/">Projects</a>';
$to = '/case-studies/">Case Studies</a>';
$output = str_replace( $from, $to, $output );
}
return $output;
}
これを機能させるためのヘルプまたは指針はありますか?
ありがとうございました!
編集..まだそれを持っていません。
それは珍しい設定です-Yoastは通常正しいパーマリンクを認識します。カスタムの投稿タイプの設定方法を変更して、最初に必要な名前とURLが含まれるようにすることを検討してください。同じコンテンツを指す2つの異なるURLがある可能性があります。これは、SEOにとって望ましくなく、エンドユーザーを混乱させる場合があります。
ただし、元の質問に答えるには、wpseo_breadcrumb_links
という別のフィルターを使用できます。
// Hook to the filter
add_filter('wpseo_breadcrumb_links', 'wpse_332125_breadcrumbs');
// $links are the current breadcrumbs
function wpse_332125_breadcrumbs($links) {
// Use is_singular($post_type) to identify a single CPT
// This assumes your CPT is called "project" - change it as needed
if(is_singular('project')) {
// The first item in $links ($links[0]) is Home, so skip it
// The second item in $links is Projects - we want to change that
$links[1] = array('text' => 'Case Studies', 'url' => '/case-studies/', 'allow_html' => 1);
}
// Even if we didn't change anything, always return the breadcrumbs
return $links;
}
すべてを徹底的にテストして、元のリンクとパンくずリストの両方が期待どおりに機能することを確認してください。このほとんど文書化されていないフィルターにつまずくのに長い時間がかかったので、これがあなたと他の人に役立つことを願っています!