Come verificare se esiste uno shortcode?

15 mar 2012, 19:04:05
Visualizzazioni: 22.6K
Voti: 6

Sto utilizzando la funzione do_shortcode per aggiungere shortcode nel mio template. Ma vorrei verificare se quello shortcode esiste prima di visualizzarlo.

Intendo qualcosa del genere

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

Qualcuno può aiutarmi? Grazie

0
Tutte le risposte alla domanda 7
0

#23572 ha introdotto shortcode_exists() nella versione 3.6.

19 lug 2013 22:44:42
1

Penso che potresti utilizzare il seguente codice per fare questo:

$content = get_the_content();
//scrivi l'inizio dello shortcode
$shortcode = '[gallery';

$check = strpos($content,$shortcode);
if($check=== false) {
  //Codice da eseguire se lo shortcode non è presente
} else {
  //Codice da eseguire se lo shortcode è presente
}

(Nota: non testato)

15 mar 2012 19:26:08
Commenti

Funziona, senza la "[" nel nome dello shortcode.

herrfischer herrfischer
18 gen 2023 12:18:43
1

Ho trovato questo online da qualche parte e l'ho usato una o due volte

//prima controlliamo la presenza dello shortcode nel contenuto
$tempContent = get_the_content();
$tempCheck = '[gallery';

$tempVerify = strpos($tempContent,$tempCheck);
if($tempVerify === false) {
  //Shortcode non trovato, non fare nulla? decidi tu
} else {
    echo do_shortcode('[gallery]');
}

.

(so che a [gallery manca il ].. lascialo così com'è)

Questo codice dovrebbe essere utilizzato all'interno del loop ..
Spero che sia utile, Sagive

15 mar 2012 19:26:27
Commenti

OMG @Ryan mi ha battuto sul tempo.. :) abbiamo postato a pochi secondi di distanza immagino perché non ho visto la sua risposta :) scusa ryan - sei arrivato prima..

Sagive Sagive
15 mar 2012 19:27:30
1

Puoi creare la tua funzione personalizzata,

// verifica la presenza di uno shortcode nel post corrente
function has_shortcode( $shortcode = NULL ) {

    $post_to_check = get_post( get_the_ID() );

    // false perché dobbiamo prima cercare nel contenuto del post
    $found = false;

    // se non viene fornito alcuno shortcode, restituisce false
    if ( ! $shortcode ) {
        return $found;
    }
    // controlla il contenuto del post per lo shortcode
    if ( stripos( $post_to_check->post_content, '[' . $shortcode) !== FALSE ) {
        // abbiamo trovato lo shortcode
        $found = TRUE;
    }

    // restituisce il risultato finale
    return $found;
}

Poi nel tuo template scrivi una condizione come,

if(has_shortcode('[gallery]')) {  
    // esegui azioni qui  
} 

Idea tratta da questo link NetTuts

15 mar 2012 19:44:17
Commenti

La versione 3.6 introduce has_shortcode()

Ian Dunn Ian Dunn
19 lug 2013 23:23:10
0

WP ora ha una funzione integrata per questo:

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

    // Lo shortcode esiste.

<?php else: ?>

   // NON ESISTE

<?php endif;?>

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

8 apr 2021 21:14:25
0

WordPress ti permette di verificare se un shortcode esiste o meno.

Per controllarlo puoi usare la funzione shortcode_exists(). Restituisce true se lo shortcode esiste.

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

Dove $tag è il nome dello shortcode che vuoi verificare.

<?php
if ( shortcode_exists( 'latest_post' ) ) {
    // Lo shortcode esiste.
}
?>
1 ago 2017 18:55:34
0

So che è una domanda vecchia, ma qualcuno potrebbe ancora averne bisogno, soprattutto perché shortcode_exists() potrebbe non funzionare con alcuni shortcode dei plugin:

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

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

    // fai quello che ti serve

} else {
    // questo non è uno shortcode valido
}
11 ott 2019 11:58:59