Как проверить существование шорткода?
Я использую функцию do_shortcode
для добавления шорткода в мой шаблон. Но я хотел бы проверить, существует ли этот шорткод, прежде чем отображать его.
Я имею в виду что-то вроде этого:
if (shortcode_gallery_exists) {
echo do_shortcode('[gallery]');
}
Может кто-нибудь помочь? Спасибо
#23572 добавил функцию shortcode_exists() в версии 3.6.

Думаю, можно использовать следующий код для этого:
$content = get_the_content();
// добавляем начало шорткода
$shortcode = '[gallery';
$check = strpos($content,$shortcode);
if($check === false) {
// Код, который выполнится, если шорткод отсутствует
} else {
// Код, который выполнится, если шорткод присутствует
}
(Примечание: не тестировалось)

Нашел это где-то в интернете и использовал пару раз
//сначала проверяем наличие шорткода в контенте
$tempContent = get_the_content();
$tempCheck = '[gallery';
$tempVerify = strpos($tempContent,$tempCheck);
if($tempVerify === false) {
//Шорткод не найден, ничего не делаем или решаете сами
} else {
echo do_shortcode('[gallery]');
}
.
(я знаю, что у [gallery не хватает ].. оставьте как есть)
Этот код должен использоваться внутри цикла
Надеюсь, поможет, Sagive

Вы можете создать свою собственную функцию,
// проверяем текущую запись на наличие шорткода
function has_shortcode( $shortcode = NULL ) {
$post_to_check = get_post( get_the_ID() );
// изначально false, так как сначала нужно проверить содержимое записи
$found = false;
// если шорткод не указан, возвращаем false
if ( ! $shortcode ) {
return $found;
}
// проверяем содержимое записи на наличие шорткода
if ( stripos( $post_to_check->post_content, '[' . $shortcode) !== FALSE ) {
// шорткод найден
$found = TRUE;
}
// возвращаем результат
return $found;
}
Затем в вашем шаблоне используйте условие, например,
if(has_shortcode('[gallery]')) {
// выполняем действия здесь
}
Идея из этой ссылки NetTuts

В версии 3.6 представлена функция has_shortcode()

В WordPress теперь есть встроенная функция для этого:
<?php
if ( shortcode_exists( 'gallery' ) ): ?>
// Шорткод существует.
<?php else: ?>
// Шорткод НЕ СУЩЕСТВУЕТ
<?php endif;?>
https://developer.wordpress.org/reference/functions/shortcode_exists/

WordPress позволяет проверить, существует ли шорткод или нет.
Для проверки можно использовать функцию shortcode_exists()
. Она возвращает true, если шорткод существует.
<?php if ( shortcode_exists( $tag ) ) { } ?>
Где $tag
— это имя шорткода, который вы хотите проверить.
<?php
if ( shortcode_exists( 'latest_post' ) ) {
// Шорткод существует.
}
?>

Я знаю, что это старый вопрос, но он может быть полезен для некоторых, особенно потому что shortcode_exists()
может не работать для некоторых шорткодов плагинов:
$shortcode_result = do_shortcode('[your_shortcode]');
if ($shortcode_result != [your_shortcode]) &&
!empty($shortcode_result))] {
// делайте то, что вам нужно
} else {
// это недействительный шорткод
}
