Скрытие пользовательского типа записи от Google?
У меня есть плагин, который использует пользовательский тип записи для хранения контента, который я извлекаю с помощью шорткода в другом месте. Однако на новом сайте я заметил, что одно из сообщений в CPT начало появляться в результатах поиска Google. Сообщение нигде не связано напрямую. Как бы это там проявилось? Как я могу скрыть его от отображения в Google?
Я установил для public значение false, теперь это просто превращает страницу в домашнюю страницу. Я не знаю, что это полностью решит мою проблему. Что еще я могу сделать?
register_post_type('mycpt', array(
'labels' => $labels,
'public' => false,
'show_ui' => true,
'menu_icon' => $icon_svg,
'_builtin' => false,
'capability_type' => 'page',
'hierarchical' => true,
'rewrite' => false,
'query_var' => 'mycpt',
'exclude_from_search' => true,
'supports' => array(
'title', 'editor', 'revisions',
),
'show_in_menu' => true,
));
2 answers
Если вы используете SEO-плагин, такой как Yoast, он автоматически добавляет все пользовательские типы записей (и таксономии) в карту сайта, используемую Google и другими поисковыми системами.
Вам нужно будет явно исключить их из карты сайта, например, в Yoast, это находится на вкладке "Типы записей"/"Таксомонии" на странице настроек "XML-карты сайта".
Также не забудьте удалить ссылки из Google с помощью Инструментов для веб-мастеров - в противном случае вам придется подождать, пока Google переиндексируйте свой сайт.
Существует способ скрыть тип записи по умолчанию от Yoast. Однако ваш пробег может варьироваться в зависимости от того, что вы делаете с вашим типом сообщения. Если вы используете его непосредственно на переднем конце, то это не сработает для вас. В моем случае я извлекал контент с помощью коротких кодов.
Таким образом, аргумент "публичный" при регистрации вашего типа сообщения включает/отключает несколько аргументов одновременно. Смотрите описание здесь: https://codex.wordpress.org/Function_Reference/register_post_type
Вы можете установить их вручную для более точного контроля. Аргумент, который, как я обнаружил, помог решить мою проблему, был publicly_queryable. Установив для этого значение false, он отключил мой пользовательский тип публикации от наличия интерфейсных страниц. В чем я не нуждался. Это скрыло тип сообщения от Йоаста. Все административные вещи продолжали работать, тип сообщения все еще функционировал так, как мне было нужно.