Проверьте, есть ли в галерее post / page?

Я хотел бы запустить некоторый код только в том случае, если галерея (вставленная с коротким ) была вставлена ​​в сообщение / страницу. Я сделал следующее:

 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, это по-прежнему огромная служебная нагрузка.