Cum transform un shortcode în cod PHP?
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"]
Î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.

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.

Folosește do_shortcode
pentru a afișa un shortcode în template-ul tău.
echo do_shortcode( '[theshortcode]' );

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

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.

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

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