Вместо того, чтобы делать весь объект $ 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, если больше ничего не видно, если что-то еще происходит.
Удачи!