¿Cómo convertir un shortcode en código PHP?

5 nov 2015, 19:46:46
Vistas: 59.3K
Votos: 1

Necesito agregar un shortcode en uno de los archivos PHP (reemplazando un código de barra de búsqueda que está hardcodeado en el archivo header PHP). ¿Cómo agrego un shortcode al archivo header PHP?

Este es el código que estoy revisando:

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

Y necesito eliminar el search-form-wrap con un shortcode diferente de formulario de búsqueda (para mls).

Aquí está el shortcode con el que tengo que trabajar:

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

Crea un tema hijo y modifica el archivo específico. Usar el Codex de WordPress y Google te guiará en el proceso.

flomei flomei
5 nov 2015 19:50:43

Estoy usando un tema hijo, pero estoy perdido sobre cómo hacer que funcione.

damann damann
5 nov 2015 19:51:32

¿Qué quieres decir? Copia el header.php a tu tema hijo, modifícalo y guárdalo. Cuando uses tu tema hijo, se utilizará el header.php modificado...

flomei flomei
5 nov 2015 19:55:26

No sé cómo tomar el <div> hasta </div> en el código anterior y reemplazarlo con un shortcode... No sé cómo hacerlo y que funcione. ¿Simplemente pongo [shortcode]?

damann damann
5 nov 2015 19:58:09

Lo que dijo Milo...

flomei flomei
5 nov 2015 20:06:00

¿Qué es "mls"?

Peter Mortensen Peter Mortensen
1 feb 2020 20:53:38
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 3
1

En general, insertar y ejecutar shortcodes directamente en los archivos de plantilla no es una buena idea y no es para lo que están diseñados los shortcodes. En su lugar, deberías usar la función de callback del shortcode como cualquier otra función de PHP o etiqueta de plantilla.

Por ejemplo, imaginemos este shortcode:

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

    $output = "¡Echo!!!";

    return $output;

}

Entonces, en lugar de hacer esto:

echo do_shortcode( '[someshortocode]' );

Deberías hacer esto:

echo someshortocode_callback();

Obviamente, para usar la función de callback del shortcode como etiqueta de plantilla, el shortcode debe estar codificado de forma que permita este uso, por lo que puede que no sea posible (aunque nunca he encontrado un shortcode que no permita el uso directo del callback, puede existir). En este caso, y solo en este caso, usaría do_shortcode( '[someshortcode]' ) (realmente nunca lo usaría).

Ten en cuenta que los shortcodes son marcadores de posición de PHP para usarse donde no se puede insertar código PHP, por eso no tiene sentido para mí usarlos en scripts PHP.

5 nov 2015 20:20:30
Comentarios

Sí, el shortcode que estoy usando no estará disponible para hacer el método preferido que recomiendas.

Y NO QUIERO usar el shortcode en el archivo php. Si hubiera una manera de eliminar la barra de búsqueda que está codificada en el php y poner el shortcode que tengo que usar en el encabezado, encima de la imagen rotatoria, eso funcionaría genial para mí.

damann damann
5 nov 2015 20:28:42
4

Utiliza do_shortcode para mostrar un shortcode en tu plantilla.

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

Vale, reemplacé todo el código que publiqué con el de echo, no funciona en absoluto.

damann damann
5 nov 2015 20:08:07

Algunos shortcodes no funcionan fuera del contexto de una publicación en el bucle. Sin saber exactamente qué hace el shortcode y cómo, no puedo ofrecer una solución.

Milo Milo
5 nov 2015 20:10:03

Es un shortcode de mls para buscar bienes raíces y es bastante enrevesado, editaré el OP con el código del shortcode.

damann damann
5 nov 2015 20:13:15

Ese es el shortcode, pero tendrías que revisar la función que maneja la salida de ese shortcode para determinar por qué no está funcionando. Puede ser más fácil pedir ayuda a quien lo escribió.

Milo Milo
5 nov 2015 20:17:41
3

Puedes usar esto.

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

¿Podrías elaborar más tu respuesta?

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

Solo usa el callback que está asignado para el shortcode. do_shortcode() es... meh.

kaiser kaiser
29 sept 2016 22:42:17

@EthanJinksO'Sullivan reemplaza shortcode_goes_here con el shortcode que te da el plugin y luego agrégalo al archivo php.

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