我正在运行带有2个博客的wordpress多站点(site1.com和site2.com)
整个网站共享相同的主题以及functions.php文件。
我需要将以下过滤器放入function.php文件中,但我需要此过滤器才能影响1个博客 - site2.com
过滤器如下:
add_filter( 'get_manager_nav', 'set_manager_nav' );
function set_manager_nav( $urls ) {
unset($urls['voucher']);
return $urls;
}
有没有办法将此过滤器仅应用于1个站点?
我所做的是我创建了一个新的插件,我已经将该功能添加到插件中并仅在site2.com上激活了该插件。
它运行良好,但我认为使用简单的代码段比使用插件要好得多,所以有没有办法使用代码片段来实现这一点?
答案 0 :(得分:1)
这有点棘手。在添加过滤器之前,您可能必须检查站点名称或ID。
您的功能保持不变,但过滤器部分变为:
$current_site = get_current_site();
if($current_site->domain == 'site2.com')
add_filter( 'get_manager_nav', 'set_manager_nav' );
您可以阅读有关get_current_site()here的更多信息。
答案 1 :(得分:0)
在我看来,在多站点内定位一个子站点的最佳方法是在过滤器调用的函数中使用get_current_blog_id()
函数。以下是一些可行的代码示例:
<?php
function function_to_call(){
if( get_current_blog_id() === 1 ){
// Return something if the site ID matches the number one...
}
// Return something if the site ID does not match the number 1
}
add_filter( 'filter_name', 'function_to_call' );
?>
您可以转到https://example.org/wp-admin/network/sites.php,其中https://example.org替换为您的域名,从而获取您要定位的网站的ID。
这种方法比这里列出的其他方法有一些好处。