Пользовательский тип сообщения functions.php if заявление о действии - PullRequest
0 голосов
/ 27 апреля 2011

Я использую разработку детской темы для холста Woothemes.

Я пытаюсь использовать functions.php в дочерней теме, чтобы использовать только действия для моего пользовательского типа записи.

Этот код не работает:

 add_action( 'woo_post_inside_after', 'my_geo_mashup' );
function my_geo_mashup() {
       echo GeoMashup::map();
    if ($post->post_type == 'listings') {
        //My function
       }
}

add_action( 'woo_post_inside_before', 'listings_nivo' );
function listings_nivo() {
echo do_shortcode('[nivo source="current-post" ]');
 if ($post->post_type == 'listings') {
        //My function
       }
}

Итак, я не уверен, как заставить вышеописанное работать должным образом и показывать эти элементы только на пользовательском типе сообщения или только для шаблона пользовательского типа сообщения single-lists.php (поскольку мне нужны только карта и слайдер показывать на самом посте, а не на странице блога (archive.php)

Ответы [ 2 ]

0 голосов
/ 01 января 2012

Вместо того, чтобы делать весь объект $ post глобальным, вы можете просто сделать глобальный $ post_type. Пример ниже.

Я не совсем уверен, куда загружается эта функция, но убедитесь, что вы зацепили где-то внутри сообщения. Если действие выполнено ранее, насколько я знаю и из опыта, переменная post будет нулевой.

В качестве теста попробуйте запустить действие в wp_footer Ex. add_action ('wp_footer', 'lists_nivo'); Посмотрите, принесет ли это какие-либо результаты.

если echoing var_dump ($ post) все еще равен нулю, ну, не уверен, куда идти дальше.

Так что вы можете попробовать запустить ниже, а затем запустить действие в соответствующем месте, если оно работает:

function listings_nivo() {
    echo do_shortcode('[nivo source="current-post" ]');
    global $post_type;
        // Diagnostic purposes
    echo var_dump($post_type);
    if ($post_type == 'listings') {
            //My function
    }
}
add_action( 'wp_footer', 'listings_nivo' );

Проверьте журнал ошибок или установите значение wp_debug в значение true в файле wp-config.php, если больше ничего не видно, если что-то еще происходит.

Удачи!

0 голосов
/ 27 апреля 2011

Внутри вашей функции попробуйте добавить global $post;.Затем, чтобы увидеть, что вы получаете с $post->post_type, выведите его на экран.Пока это дает вам «списки», ваш код должен работать.Если нет, возможно, есть еще одна проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...