Вопрос или проблема
У меня есть функция add_filter в файле functions.php:
add_filter( 'acf/load_value', 'auto_link_post_titles' );
Я хочу применить это только к определённым типам записей. Это возможно? И если да, то как?
Спасибо.
Ответ или решение
Да, вы можете применить фильтр acf/load_value
только к определённым типам записей в WordPress, добавив проверку типа записи внутри функции обратного вызова вашего фильтра. Ниже приведён пример кода, который демонстрирует, как это сделать.
- Во-первых, у вас уже есть базовая установка фильтра в файле
functions.php
:
add_filter( 'acf/load_value', 'auto_link_post_titles' );
- Теперь вам нужно изменить функцию
auto_link_post_titles
, чтобы она проверяла, к какому типу записи применяется фильтр. Вот пример кода:
function auto_link_post_titles( $value, $post_id, $field ) {
// Получаем объект поста
$post = get_post( $post_id );
// Проверяем, является ли пост нужного типа
if ( $post && in_array( $post->post_type, array( 'custom_post_type_1', 'custom_post_type_2' ) ) ) {
// Ваш логика для обработки постов здесь
// Например, вы можете изменить переменную $value
// ...
}
// Возвращаем значение (применяемое для всех постов)
return $value;
}
add_filter( 'acf/load_value', 'auto_link_post_titles', 10, 3 );
Объяснение кода
-
Получение поста: Мы используем
get_post( $post_id )
, чтобы получить объект поста, что позволяет нам получить доступ к полюpost_type
. -
Проверка типа записи: Используем условие
in_array( $post->post_type, array( 'custom_post_type_1', 'custom_post_type_2' ) )
, чтобы убедиться, что тип записи соответствует одному из перечисленных. Замените'custom_post_type_1'
и'custom_post_type_2'
на ваши собственные пользовательские типы записей. - Обработка значения: Внутри условия вы можете добавить свою логику, чтобы изменять значение
$value
только для необходимых типов записей.
Заключение
Таким образом, данный код будет применять фильтр только к указанным вами пользовательским типам записей, что улучшит производительность и сделает код более целенаправленным. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!