我添加了在我的网站上注册的可能性(以订阅者的角色),但是每次注册都会为用户创建一个作者页面,但我不希望这些页面被索引,只希望具有上述角色的作者页面被索引。
类似于下面的代码,但没有get\\u user\\u role函数,因此我不知道如何获得该结果。如果有人能帮忙,我将不胜感激。
<meta name="robots" content="<?php if( is_page(\'author\') ) && get_user_role(\'subscriber\'); {
echo "noindex, nofollow";
}else{
echo "index, follow";
} ?>" />
编辑:
这是@belinos答案的代码。我把它放在标题里。php,问题是online site, 在本地主机上,它不会出现。
<?php $curauth = ( isset( $_GET[ \'author_name\' ] ) ) ? get_user_by( \'slug\', $author_name ) : get_userdata( intval ($author ) );
$auth_data = get_userdata( $curauth->ID );
if ( in_array( \'subscriber\', $auth_data->roles )) { ?>
<meta name="robots" content="noindex, nofollow"/>
<?php } else { ?>
<meta name="robots" content="index, follow"/>
<?php } ?>
这是错误:
警告:in\\u array()要求参数2为array,在/home/u836053643/public\\u html/wp-content/themes/gamersaction/header中为null。php在线35
这就是第35行:
if ( in_array( \'subscriber\', $auth_data->roles )) { ?>
代码工作正常,但显示了此错误。
SO网友:Cedon
您想要的功能是get_userdata()
. 由于您需要在循环之外执行此操作,因此过程就不那么直接了。
您需要做的第一件事是设置一个名为$curauth
这是通过使用$_GET[]
超全局。
$curauth = ( isset( $_GET[ \'author_name\' ] ) ) ? get_user_by( \'slug\', $author_name ) : get_userdata( intval ($author ) );
此分配
$curauth
一定在你的
author.php
文件
之后,我们可以使用get_userdata()
函数并从中向其提供ID$curauth
.
$auth_data = get_userdata( $curauth->ID );
然后,您的条件变成:
if ( in_array( \'subscriber\', $auth_data->roles ) ) {
// No Follow Code
} else {
// Follow Code
}
我的建议是在你的
functions.php
文件:
function author_nofollow( $author ) {
$auth_id = $author->ID;
$auth_data = get_userdata( $auth_id );
if ( in_array( \'subscriber\', $auth_data->roles ) ) {
echo \'noindex, nofollow\';
} else {
echo \'index, follow\';
}
}
那么你可以这样称呼它:
<meta name="robots" content="<?php author_nofollow( $curauth ); ?>">
SO网友:bosco
实现这一点的最简单方法是有条件地调用wp_no_robots()
(或响应您的自定义<meta>
元素)中wp_head
action 钩这具有模块化的额外好处——如果需要,您可以将其放入插件中,而不是执行主题修改。
在作者档案中,get_queried_object()
will(通常-设置其他查询变量会导致此错误)返回WP_User
- 与get_userdata()
返回。
function wpse261293_noindex_subscriber_profiles() {
// Ignore non-author-archive content
if( !is_author() )
return;
// Get a WP_User object for the author
$author = get_queried_object();
// If \'subscriber\' is the author\'s only role, print a nofollow robots meta element
if( count( $author->roles ) === 1 && in_array( \'subscriber\', $author->roles ) )
wp_no_robots(); // Alternately, replace this with echo( \'your_custom_meta_element\' )
}
add_action( \'wp_head\', \'wpse261293_noindex_subscriber_profiles\' );
如果您或其他插件具有可授予订阅者的自定义用户角色,您可能需要更改逻辑以解释它们-可能需要检查作者是否没有管理员、编辑、贡献者等角色。