Intereting Posts
WordPress Query Crashes Browser Почему авторам разрешено принимать комментарии к своим сообщениям? Как отменить привилегии? Как добавить фильтр в миниатюру сообщения перед сохранением в базе данных? сравнить несколько значений метаданных для одного и того же ключа в wp_query Почему моя боковая панель перетаскивается на этот конкретный uid? Используйте знак плюса «+» вместо тире «-» в URL-адресах Как я могу получить изображение или первое изображение для публикации / страницы и отобразить его как баннер? Как конвертировать комментарии WordPress к ответам bbPress Как я эхо типа сообщения? Facebook и WordPress Как загрузить другую тему для категорий? Отображать теги, которые отображаются только в одной категории Отключить родительский аккаунт в wp_list_pages – WordPress Переименование вложений при загрузке независимо от типа файла Как изменить имя пользователя?

Аутентификация подписчика подписчика Noindex

Я добавил возможность зарегистрироваться на моем сайте (с ролью подписчика), однако каждая регистрация создает страницу автора для пользователя, но я не хочу, чтобы эти страницы были проиндексированы, а только страницы авторов с приведенными выше ролями.

Что-то вроде кода ниже, но theres no get_user_role функция, поэтому я не знаю, как добраться до этого результата. Буду признателен, если кто-нибудь сможет помочь.

<meta name="robots" content="<?php if( is_page('author') ) && get_user_role('subscriber'); { echo "noindex, nofollow"; }else{ echo "index, follow"; } ?>" /> 

Редактировать:

Это код ответа @belinos. Я помещаю его в header.php, проблема в том, что на веб-сайте появляется ошибка, а на localhost он не появляется.

 <?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_array () ожидает, что параметр 2 будет массивом, null указан в /home/u836053643/public_html/wp-content/themes/gamersaction/header.php в строке 35

И это линия 35:

 if ( in_array( 'subscriber', $auth_data->roles )) { ?> 

Код работает отлично, но показывает эту ошибку.

Solutions Collecting From Web of "Аутентификация подписчика подписчика Noindex"

Вы хотите функцию get_userdata() . Поскольку вам нужно делать это за пределами цикла, процесс немного менее прямолинейный.

Первое, что вам нужно сделать, это настроить переменную с именем $curauth которая является объектом, который вы создаете, обращаясь к базе данных с помощью $_GET[] .

 $curauth = ( isset( $_GET[ 'author_name' ] ) ) ? get_user_by( 'slug', $author_name ) : get_userdata( intval ($author ) ); 

Это присвоение $curauth должно быть в вашем файле author.php .

После этого мы можем использовать get_userdata() и 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 ); ?>"> 

Самый простой способ добиться этого – условно вызвать wp_no_robots() (или эхо ваш пользовательский элемент <meta> ) в wp_head действия wp_head . Это дает дополнительное преимущество модульности – вы можете выбросить его в плагин, а не при необходимости изменять тему.

В случае с архивом автора get_queried_object() будет (обычно – установка других запросов vars может отбросить это) возвращает экземпляр WP_User – тот же тип объекта, get_userdata() возвращает 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' ); 

Если у вас или у другого плагина есть пользовательские роли, которые могут быть предоставлены подписчикам, вам может потребоваться изменить логику для их учета – потенциально, проверяя, нет ли у автора просто функций администратора, редактора, автора и т. Д.