web-dev-qa-db-ja.com

Functions.phpに複数の分類フィルターを追加する

Yoast SEOサイトマップインデックスから(3)関連のない分類法を削除するには、functions.phpファイルに複数の分類法フィルターを追加する必要があります。 1つのフィルタを追加することに成功しましたが、他の2つのフィルタを追加すると、500サーバーエラーが発生し続けます。私はPHPに関しては私が初心者であることに注意しなければならないので、ここで見逃していることがかなり単純なものがあると私は想像します。

単独で機能するフィルタ:

function sitemap_exclude_taxonomy( $value, $taxonomy ) {
if ( 'scope' == $taxonomy ) return true;
 }
 add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy', 10, 2 );

しかし、次のコードは残りの2つのフィルタを追加するためには機能しませんでした。

function sitemap_exclude_taxonomy( $value, $taxonomy ) {
if ( 'scope' == $taxonomy ) return true;
 }
 add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy', 10, 2 );

function sitemap_exclude_taxonomy( $value, $taxonomy ) {
if ( 'layout_type' == $taxonomy ) return true;
 }
 add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy', 10, 2 );

function sitemap_exclude_taxonomy( $value, $taxonomy ) {
if ( 'module_width' == $taxonomy ) return true;
 }
 add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy', 10, 2 );

ご協力ありがとうございます。

-マーク

1
Mark

PHP in_array を試してください。

function sitemap_exclude_taxonomy( $value, $taxonomy ) {
    $excludes = ['scope', 'layout_type', 'foo', 'bar'];
    if ( in_array( $taxonomy, $excludes ) return true;
}

add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy', 10, 2 );
1
Will

同じ関数名を複数回使用することはできません。代わりに、それらの名前を変更してください。

function sitemap_exclude_taxonomy_1( $value, $taxonomy ) {
    if ( 'scope' == $taxonomy ) return true;
}
add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy_1', 10, 2 );

function sitemap_exclude_taxonomy_2( $value, $taxonomy ) {
    if ( 'layout_type' == $taxonomy ) return true;
}
add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy_2', 10, 2 );

function sitemap_exclude_taxonomy_3( $value, $taxonomy ) {
    if ( 'module_width' == $taxonomy ) return true;
}
add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy_3', 10, 2 );

あるいはもっと良いのは、それらを1つのきちんとした機能にまとめることです:

function sitemap_exclude_taxonomy( $value, $taxonomy ) {
    if (   'scope' == $taxonomy
        || 'layout_type' == $taxonomy
        || 'module_width' == $taxonomy )
       return true;
}
add_filter( 'wpseo_sitemap_exclude_taxonomy', 'sitemap_exclude_taxonomy', 10, 2 );
1
DACrosby