Подключить функцию из файла function.php

97
14 августа 2019, 10:40

Как я могу подключить функцию в WordPress, из файла function.php, таким образом, чтобы она работала только для одной страницы?

if( is_page( '285' ) ):
    function searchfilter($query) {
        if( $query->is_search && !is_admin() ) {
            $query->set('post_type', array('projects'));
        }
        return $query;
    }
    add_filter('pre_get_posts','searchfilter');
endif;

У меня есть такой код, но он не работает. Kто подскажет, в чём проблема?

Answer 1

Условные теги не работают прямо в functions.php. На момент подключения этого файла в ядре ещё не установлен главный запрос WordPress, поэтому is_page() с любыми аргументами и без них возвращает false.

Условный тег должен быть использован внутри хука:

function searchfilter( $query ) {
    if ( $query->is_search && ! is_admin() ) {
        if ( is_page( '285' ) ) {
            $query->set( 'post_type', array( 'projects' ) );
        }
    }
    return $query;
}
add_filter( 'pre_get_posts', 'searchfilter' );

Но и такой код неправильный. is_search() и is_page() никогда не вернут true одновременно. Из вопроса непонятно, что именно вы хотите сделать.

READ ALSO
Можно ли взять данные из тегов html страницы, часть которой грузится из php?

Можно ли взять данные из тегов html страницы, часть которой грузится из php?

Недавно задался вопросом, можно ли взять к примеру текст из дивов на странице, которая частично подгружается из php? Сначала я написал небольшой...

120
Как отправить PUT запрос

Как отправить PUT запрос

Использую yii2-httpclient получилось отправить GET запрос так:

137
Прокрутка строк в таблице на мобильной версии

Прокрутка строк в таблице на мобильной версии

Есть такая таблица элементов:

110
Узнать текст ссылки по которой перешли на сайт

Узнать текст ссылки по которой перешли на сайт

я столкнулся с ситуацией, когда мне нужно узнать текст ссылки по которой перешли на мой сайтУ меня система такая, что при переходе на страницу...

119