если существует пользовательский тип записей и есть сценарий загрузки записей


Я зарегистрировал пользовательский тип записи 'featured_post'. Я ищу способ проверить, есть ли на домашней странице блога какие-либо сообщения 'featured_post' и есть ли на ней файл javascript.

Сообщения "featured_post" сделают слайдер в верхней части домашней страницы блога. У меня это работало с использованием липких сообщений, но я не могу понять, как условно загрузить скрипт, если есть сообщения CPT 'featured_post'.

Это код, который работал для sticky сообщения:

 if ( is_front_page() && is_sticky() ) {
            wp_enqueue_script ('flexslider-js');
        }

Однако, похоже, это не работает, и я не знаю, почему:

    if ( is_front_page() && get_post_type('featured_post') ) {
        wp_enqueue_script ('flexslider-js');
    }

Заранее благодарю.

Author: chalky, 2012-07-21

2 answers

В данный момент я на работе (извините, босс), поэтому я не могу это проверить, но приведенный ниже фрагмент должен быть правильным способом проверки, существует ли тип записи "featured_post", а затем поставьте в очередь сценарий, если в нем есть какие-либо сообщения.

if ( is_front_page() && post_type_exists('featured_post') ) { // We are at the front page, and the post type 'featured_post' is registered.
    $hasposts = get_posts( 'post_type=featured_post' ); // lets check if there is any posts in the 'featured_post' post type.
    if( $hasposts ) { // If we found some posts, lets enqueue the script
        wp_enqueue_script ('flexslider-js');
    }
}
 1
Author: Andre A, 2012-07-21 13:30:37

В WordPress есть вспомогательная функция, которая делает именно это: post_type_exists()

Пример:

if ( post_type_exists( 'book' ) ) {
   echo 'the Book post type exists';
}
 2
Author: Steven Word, 2013-08-01 17:00:52