向函数添加多个分类筛选器。php

时间:2015-11-11 作者:Mark

我需要向函数添加多个分类过滤器。php文件从Yoast SEO网站地图索引中删除(3)个不相关的分类法。我已经能够成功地添加一个过滤器,但当我添加其他两个过滤器时,我不断收到一个500服务器错误。我应该注意到,在PHP方面,我是一个新手,所以我想这里缺少一些非常简单的东西。

自行工作的过滤器:

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 ( \'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 );
非常感谢您的帮助!

-标记

2 个回复
SO网友:Will

Try PHP\'s 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 );
SO网友:DACrosby

不能多次使用相同的函数名。相反,请重命名它们:

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 );
或者更好的是,将它们组合在一个整洁的功能中:

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 );

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!