Intereting Posts
Добавить значок воспроизведения на наложение эскизов для типов видеопотоков Список всех слизней? исключая текущий пост из get_posts Обнаруживать каждый активный экземпляр виджета Высокая загрузка процессора при загрузке изображений в медиа-библиотеку Виджет и сохранение выбора выбора Получить функции входа в WordPress без печати Попытка заменить старый PDF новым файлом, удаленным старым файлом мультимедиа! Удалить сообщение без трафика? Почему постоянная ссылка типа post никогда не попадает в index.php Пользовательский тип сообщения постоянная ссылка не работает над новыми сообщениями Получить текущую таксономию и отобразить запрос соответственно Как создать таблицу HTML из таблицы базы данных? Извлечение данных из нескольких сайтов WordPress с использованием скрипта PHP Как «спарить» два виджета бок о бок в одной боковой панели

Изменить название должности, если сообщение имеет определенную категорию

В основном, я пытаюсь добиться того, чтобы название изменилось с позиций, которые находятся в категории № 30.

Мой код:

function adddd($title) { if(has_category('30',$post->ID)){ $title = 'Prefix '.$title; } return $title; } add_action('the_title','adddd'); 

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

Как я могу изменить название только для публикации заголовков, имеющих эту категорию, независимо от того, на какой странице я нахожусь?

Solutions Collecting From Web of "Изменить название должности, если сообщение имеет определенную категорию"

$post не определено в вашем фильтре. Вам нужно явно вызвать глобальную переменную $post внутри вашей функции фильтрации, чтобы она была доступна. Вы должны помнить, что переменные ( даже глобальные переменные ) вне функции не будут доступны внутри функции, то есть как работает PHP.

Фактически вам не нужно использовать $post global, идентификатор post передается по ссылке как второй параметр в фильтр the_title .

Вы можете использовать следующее:

 add_action( 'the_title', 'adddd', 10, 2 ); function adddd( $title, $post_id ) { if( has_category( 30, $post_id ) ) { $title = 'Prefix ' . $title; } return $title; } 

Если вам нужно настроить таргетинг только на заголовки сообщений в основном запросе / цикле, вы можете обернуть свой contional в дополнительное in_the_loop()

Почему бы не использовать javascript / jquery?

если вы используете <?php post_class(); ?> <?php post_class(); ?> вы можете найти другой класс для каждой категории.

  $('.post.category-one').find('h2.item-title').prepend('Prefix '); 

Используйте .find() для названия селектора

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

С php попробуйте это

 function adddd($title) { global $post; if(has_category('30',$post->ID)) { $title = 'Prefix '.$post->post_title; } return $title; } add_action('the_title','adddd');