Cum să verifici dacă există un shortcode?
Folosesc funcția do_shortcode
pentru a adăuga shortcode în template-ul meu. Dar aș dori să verific dacă acel shortcode există înainte de a-l afișa.
Mă refer la ceva de genul:
if (shortcode_exists('gallery')) {
echo do_shortcode('[gallery]');
}
Mă poate ajuta cineva? Mulțumesc
#23572 a introdus shortcode_exists() în versiunea 3.6.

Cred că ai putea folosi următorul cod pentru a face asta:
$content = get_the_content();
//scrie începutul shortcode-ului
$shortcode = '[gallery';
$check = strpos($content,$shortcode);
if($check=== false) {
//Cod de executat dacă shortcode-ul nu este prezent
} else {
//Cod de executat dacă shortcode-ul este prezent
}
(Atenție: netestat)

Am găsit acest cod online și l-am folosit o dată sau de două ori
//mai întâi verificăm dacă există shortcode în conținut
$tempContent = get_the_content();
$tempCheck = '[gallery';
$tempVerify = strpos($tempContent,$tempCheck);
if($tempVerify === false) {
//Shortcode-ul nu a fost găsit, nu facem nimic? tu decizi
} else {
echo do_shortcode('[gallery]');
}
.
(știu că [gallery nu are ].. lasă-l așa)
Acest cod ar trebui folosit în interiorul loop-ului
..
Sper că te ajută, Sagive

Puteți crea propria funcție,
// verifică dacă postarea curentă conține un shortcode specific
function has_shortcode( $shortcode = NULL ) {
$post_to_check = get_post( get_the_ID() );
// inițializăm cu false deoarece trebuie să căutăm în conținutul postării
$found = false;
// dacă nu este furnizat niciun shortcode, returnăm false
if ( ! $shortcode ) {
return $found;
}
// verificăm conținutul postării pentru shortcode
if ( stripos( $post_to_check->post_content, '[' . $shortcode) !== FALSE ) {
// am găsit shortcode-ul
$found = TRUE;
}
// returnăm rezultatul final
return $found;
}
Apoi în template puteți scrie o condiție precum,
if(has_shortcode('[gallery]')) {
// efectuați acțiuni aici
}
Idee preluată de la acest link NetTuts

Versiunea 3.6 introduce has_shortcode()

WP are acum o funcție încorporată pentru asta:
<?php
if ( shortcode_exists( 'gallery' ) ): ?>
// Shortcode-ul există.
<?php else: ?>
// NU EXISTĂ
<?php endif;?>
https://developer.wordpress.org/reference/functions/shortcode_exists/

WordPress vă permite să verificați dacă un shortcode există sau nu.
Pentru a face această verificare, puteți utiliza funcția shortcode_exists()
. Aceasta returnează true dacă shortcode-ul există.
<?php if ( shortcode_exists( $tag ) ) { } ?>
Unde $tag
reprezintă numele shortcode-ului pe care doriți să îl verificați.
<?php
if ( shortcode_exists( 'latest_post' ) ) {
// Shortcode-ul există.
}
?>

Știu că este o întrebare veche, dar cineva ar putea avea nevoie de această informație, mai ales pentru că shortcode_exists()
poate să nu funcționeze pentru unele shortcode-uri din plugin-uri:
$shortcode_result = do_shortcode('[your_shortcode]');
if ($shortcode_result != '[your_shortcode]' &&
!empty($shortcode_result)) {
// fă ce ai nevoie
} else {
// acesta nu este un shortcode valid
}
