Come trasformare uno shortcode in codice PHP?
Ho bisogno di aggiungere uno shortcode in uno dei file PHP (sostituendo un codice della barra di ricerca che è hardcodato nel file header PHP). Come posso aggiungere uno shortcode al file header PHP?
Questo è il codice che sto esaminando:
<?php if ( (is_front_page()) && (of_get_option('g_search_box_id') == 'yes') ) { ?>
<div class="search-form-wrap hidden-phone" data-motopress-type="static" data-motopress-static-file="static/static-search.php">
<?php get_template_part("static/static-search"); ?>
</div>
<?php } ?>
E devo rimuovere il search-form-wrap con un diverso modulo di ricerca shortcode (per mls).
Ecco lo shortcode con cui devo lavorare:
[idx_search link="###########" detailed_search="off" destination="local" user_sorting="off" location_search="on" property_type_enabled="on" theme="hori_round_light" orientation="horizontal" width="730" title_font="Arial" field_font="Arial" border_style="rounded" widget_drop_shadow="off" background_color="#ffffff" title_text_color="#000000" field_text_color="#545454" detailed_search_text_color="#234c7a" submit_button_shine="shine" submit_button_background="#59cfeb" submit_button_text_color="#000000"]
In generale, inserire ed eseguire shortcode direttamente nei file dei template non è una buona idea e non è lo scopo per cui gli shortcode sono stati concepiti. Invece, dovresti utilizzare il callback dello shortcode proprio come qualsiasi altra funzione PHP o tag del template.
Ad esempio, immaginiamo questo shortcode:
add_shortcode('someshortocode', 'someshortocode_callback');
function someshortocode_callback( $atts = array(), $content = null ) {
$output = "Echo!!!";
return $output;
}
Quindi, invece di fare questo:
echo do_shortcode( '[someshortocode]' );
Dovresti fare questo:
echo someshortocode_callback();
Ovviamente, per utilizzare il callback dello shortcode come tag del template, lo shortcode deve essere codificato in modo da permettere questo utilizzo, quindi potrebbe non essere possibile (anche se non ho mai trovato uno shortcode che non permetta l'uso diretto del callback, potrebbe esistere). In questo caso, e solo in questo caso, utilizzerei do_shortcode( '[someshortcode]' )
(anche se in realtà non lo userei mai).
Nota che gli shortcode sono segnaposto PHP da utilizzare dove non è possibile inserire codice PHP, ecco perché per me non ha senso usarli negli script PHP.

Sì, lo shortcode che sto utilizzando non sarà disponibile per implementare il metodo preferito che consigli.
E non VOGLIO usare lo shortcode nel file php. Se ci fosse un modo per rimuovere la barra di ricerca che è hardcoded nel php e inserire lo shortcode che devo usare nell'header, sopra l'immagine rotante, sarebbe perfetto per me.

Utilizza do_shortcode
per visualizzare uno shortcode nel tuo template.
echo do_shortcode( '[theshortcode]' );

Ok, ho sostituito tutto il codice che ho postato con quello echo, non funziona affatto.

Alcuni shortcode non funzionano al di fuori del contesto di un post nel loop. Senza sapere esattamente cosa fa lo shortcode e come, non posso offrire una soluzione.

È uno shortcode mls per cercare immobili ed è piuttosto complesso, modificherò il post originale con il codice dello shortcode.

Usa semplicemente il callback assegnato allo shortcode. do_shortcode()
è... meh.
