Come trasformare uno shortcode in codice PHP?

5 nov 2015, 19:46:46
Visualizzazioni: 59.3K
Voti: 1

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"]

6
Commenti

Crea un child theme e modifica il file specifico. Utilizzando il WordPress Codex e Google potrai trovare tutte le informazioni necessarie.

flomei flomei
5 nov 2015 19:50:43

Sto usando un child theme, ma non riesco a capire come farlo funzionare correttamente.

damann damann
5 nov 2015 19:51:32

Cosa intendi? Copia il file header.php nel tuo child theme, modificarlo e salvarlo. Quando utilizzi il child theme, verrà usata la versione modificata di header.php...

flomei flomei
5 nov 2015 19:55:26

Non so come prendere il <div> fino a </div> nel codice sopra e sostituirlo con uno shortcode... Non so come farlo e farlo funzionare. Devo semplicemente inserire [shortcode]?

damann damann
5 nov 2015 19:58:09

Quello che ha detto Milo...

flomei flomei
5 nov 2015 20:06:00

Cosa significa "mls"?

Peter Mortensen Peter Mortensen
1 feb 2020 20:53:38
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 3
1

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.

5 nov 2015 20:20:30
Commenti

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.

damann damann
5 nov 2015 20:28:42
4

Utilizza do_shortcode per visualizzare uno shortcode nel tuo template.

echo do_shortcode( '[theshortcode]' );
5 nov 2015 20:01:36
Commenti

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

damann damann
5 nov 2015 20:08:07

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.

Milo Milo
5 nov 2015 20:10:03

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

damann damann
5 nov 2015 20:13:15

Questo è lo shortcode, ma dovresti esaminare la funzione che gestisce l'output di quello shortcode per capire perché non funziona. Potrebbe essere più semplice chiedere assistenza a chi l'ha scritto.

Milo Milo
5 nov 2015 20:17:41
3

Puoi utilizzare questo codice.

<?php echo do_shortcode('[Shortcode_goes_here]') ?>
29 set 2016 18:47:13
Commenti

Puoi per favore elaborare la tua risposta?

Ethan Rævan Ethan Rævan
29 set 2016 21:27:33

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

kaiser kaiser
29 set 2016 22:42:17

@EthanJinksO'Sullivan sostituisci shortcode_goes_here con lo shortcode che ti fornisce il plugin e poi aggiungilo al file php.

Charles Xavier Charles Xavier
3 ott 2016 20:16:24