Я хотел бы запустить некоторый код только в том случае, если галерея (вставленная с коротким ) была вставлена в сообщение / страницу. Я сделал следующее:
gallery_shortcode($post->ID) ? $gallery = 1 : $gallery = 0;
Однако это всегда устанавливает $gallery = 0
, есть ли галерея или нет. Я использую это неправильно?
пытаться :
if (strpos($post->post_content,'[gallery') === false){ $gallery = 0; }else{ $gallery = 1; }
Моя итерация по предлагаемому решению здесь – это следующая функция в функциях моей темы. Php:
function has_gallery($post_id = false) { if (!$post_id) { global $post; } else { $post = get_post($post_id); } return ( strpos($post->post_content,'[gallery') !== false); }
Который я могу затем вызвать в файле шаблона (не волнует The Loop):
$has_gallery = has_gallery($post_id) ? true : false;
или более прямой:
has_gallery($post_id); //will evaluate to true/false
$post_id
является обязательным, следующее будет работать только внутри цикла:
has_gallery();
Как просто использовать get_post_gallery()
. Именно так, большинство тем проверяет, есть ли в публикации галерея для печати правильных CSS-классов тела:
if ( get_post_gallery() ) { // run your code in here }
PS Мне действительно не нравятся решения, которые ищут весь контент для чего-либо, даже если строковые функции, как правило, довольно быстрые в PHP, это по-прежнему огромная служебная нагрузка.