Cum transform un shortcode în cod PHP?

5 nov. 2015, 19:46:46
Vizualizări: 59.3K
Voturi: 1

Trebuie să adaug un shortcode într-unul din fișierele PHP (înlocuind un cod de bară de căutare care este hardcodat în fișierul header PHP). Cum pot adăuga un shortcode în fișierul header PHP?

Acesta este codul pe care îl analizez:

<?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 } ?>

Și trebuie să înlocuiesc search-form-wrap cu un formular de căutare diferit bazat pe shortcode (pentru mls).

Acesta este shortcode-ul cu care trebuie să lucrez:

[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
Comentarii

Creează o temă copil și modifică fișierul specific. Folosirea WordPress Codex și a Google te vor ghida în acest proces.

flomei flomei
5 nov. 2015 19:50:43

Folosesc o temă copil, dar sunt pierdut în legătură cu cum să o fac să funcționeze.

damann damann
5 nov. 2015 19:51:32

Ce vrei să spui? Copiază header.php în tema ta copil, modifică-l și salvează-l. Când folosești tema copil, versiunea modificată a header.php va fi utilizată...

flomei flomei
5 nov. 2015 19:55:26

Nu știu cum să iau <div> până la </div> în codul de mai sus și să le înlocuiesc cu un shortcode... Nu știu cum să fac asta și să funcționeze. Pur și simplu introduc [shortcode]?

damann damann
5 nov. 2015 19:58:09

Ceea ce a spus Milo...

flomei flomei
5 nov. 2015 20:06:00

Ce este "mls"?

Peter Mortensen Peter Mortensen
1 feb. 2020 20:53:38
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 3
1

În general, inserarea și executarea directă a shortcode-urilor în fișierele de template nu este o idee bună și nu reprezintă scopul pentru care shortcode-urile au fost create. În schimb, ar trebui să utilizați callback-ul shortcode-ului la fel ca orice altă funcție PHP sau template tag.

De exemplu, să ne imaginăm următorul shortcode:

add_shortcode('someshortocode', 'someshortocode_callback');
function someshortocode_callback( $atts = array(), $content = null ) {

    $output = "Echo!!!";

    return $output;

}

Apoi, în loc să faceți asta:

echo do_shortcode( '[someshortocode]' );

Ar trebui să faceți asta:

echo someshortocode_callback();

Evident, pentru a putea utiliza callback-ul shortcode-ului ca template tag, shortcode-ul trebuie să fie codat într-un mod care permite această utilizare, așa că este posibil să nu fie întotdeauna posibil (deși nu am întâlnit niciodată un shortcode care să nu permită utilizarea directă a callback-ului, poate exista). În acest caz, și numai în acest caz, aș folosi do_shortcode( '[someshortcode]' ) (deși personal nu aș folosi niciodată acest lucru).

Rețineți că shortcode-urile sunt substituenți PHP care trebuie folosiți acolo unde codul PHP nu poate fi inserat, de aceea nu are sens pentru mine să le folosiți în scripturile PHP.

5 nov. 2015 20:20:30
Comentarii

Da, shortcode-ul pe care îl folosesc nu va fi disponibil pentru a face metoda preferată pe care o recomanzi.

Și NU VREAU să folosesc shortcode-ul în fișierul php. Dacă ar exista o modalitate de a elimina bara de căutare care este hardcodată în php și de a pune shortcode-ul pe care trebuie să îl folosesc în header, deasupra imaginii rotative, asta ar funcționa perfect pentru mine.

damann damann
5 nov. 2015 20:28:42
4

Folosește do_shortcode pentru a afișa un shortcode în template-ul tău.

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

Bine, am înlocuit întregul cod pe care l-am postat cu cel cu echo, nu funcționează deloc.

damann damann
5 nov. 2015 20:08:07

Unele shortcode-uri nu funcționează în afara contextului unui post în buclă. Fără să știu exact ce face shortcode-ul și cum, nu pot oferi o soluție.

Milo Milo
5 nov. 2015 20:10:03

Este un shortcode MLS pentru căutarea de imobile și este destul de complicat, voi edita postul original cu codul shortcode-ului.

damann damann
5 nov. 2015 20:13:15

Acesta este shortcode-ul, dar va trebui să te uiți la funcția care gestionează afișarea acelui shortcode pentru a determina de ce nu funcționează. Poate fi mai ușor să ceri ajutor de la persoana care l-a scris.

Milo Milo
5 nov. 2015 20:17:41
3

Puteți folosi acest cod.

<?php echo do_shortcode('[Shortcode_goes_here]') ?>
29 sept. 2016 18:47:13
Comentarii

Poți să elaborezi răspunsul tău, te rog?

Ethan Rævan Ethan Rævan
29 sept. 2016 21:27:33

Folosește pur și simplu callback-ul asignat pentru shortcode. do_shortcode() este... meh.

kaiser kaiser
29 sept. 2016 22:42:17

@EthanJinksO'Sullivan înlocuiește shortcode_goes_here cu shortcode-ul pe care îl oferă plugin-ul și apoi adaugă-l în fișierul php.

Charles Xavier Charles Xavier
3 oct. 2016 20:16:24