Как проверить существование шорткода?

15 мар. 2012 г., 19:04:05
Просмотры: 22.6K
Голосов: 6

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

Я имею в виду что-то вроде этого:

if (shortcode_gallery_exists) {
  echo do_shortcode('[gallery]');
}

Может кто-нибудь помочь? Спасибо

0
Все ответы на вопрос 7
0

#23572 добавил функцию shortcode_exists() в версии 3.6.

19 июл. 2013 г. 22:44:42
1

Думаю, можно использовать следующий код для этого:

$content = get_the_content();
// добавляем начало шорткода
$shortcode = '[gallery';

$check = strpos($content,$shortcode);
if($check === false) {
  // Код, который выполнится, если шорткод отсутствует
} else {
  // Код, который выполнится, если шорткод присутствует
}

(Примечание: не тестировалось)

15 мар. 2012 г. 19:26:08
Комментарии

Это работает, если убрать "[" из названия шорткода.

herrfischer herrfischer
18 янв. 2023 г. 12:18:43
1

Нашел это где-то в интернете и использовал пару раз

//сначала проверяем наличие шорткода в контенте
$tempContent = get_the_content();
$tempCheck = '[gallery';

$tempVerify = strpos($tempContent,$tempCheck);
if($tempVerify === false) {
  //Шорткод не найден, ничего не делаем или решаете сами
} else {
    echo do_shortcode('[gallery]');
}

.

(я знаю, что у [gallery не хватает ].. оставьте как есть)

Этот код должен использоваться внутри цикла
Надеюсь, поможет, Sagive

15 мар. 2012 г. 19:26:27
Комментарии

О боже, @Ryan опередил меня.. :) видимо, мы опубликовали ответ с разницей в пару секунд, потому что я не увидел его ответ :) извини, Ryan — ты был первым..

Sagive Sagive
15 мар. 2012 г. 19:27:30
1

Вы можете создать свою собственную функцию,

// проверяем текущую запись на наличие шорткода
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

15 мар. 2012 г. 19:44:17
Комментарии

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

Ian Dunn Ian Dunn
19 июл. 2013 г. 23:23:10
0

В WordPress теперь есть встроенная функция для этого:

<?php
 
if ( shortcode_exists( 'gallery' ) ): ?>

    // Шорткод существует.

<?php else: ?>

   // Шорткод НЕ СУЩЕСТВУЕТ

<?php endif;?>

https://developer.wordpress.org/reference/functions/shortcode_exists/

8 апр. 2021 г. 21:14:25
0

WordPress позволяет проверить, существует ли шорткод или нет.

Для проверки можно использовать функцию shortcode_exists(). Она возвращает true, если шорткод существует.

<?php if ( shortcode_exists( $tag ) ) { } ?>

Где $tag — это имя шорткода, который вы хотите проверить.

<?php
if ( shortcode_exists( 'latest_post' ) ) {
    // Шорткод существует.
}
?>
1 авг. 2017 г. 18:55:34
0

Я знаю, что это старый вопрос, но он может быть полезен для некоторых, особенно потому что shortcode_exists() может не работать для некоторых шорткодов плагинов:

$shortcode_result = do_shortcode('[your_shortcode]');

if ($shortcode_result != [your_shortcode]) && 
    !empty($shortcode_result))] {

    // делайте то, что вам нужно

} else {
    // это недействительный шорткод
}
11 окт. 2019 г. 11:58:59