Lo sentimos, los corchetes aún no están permitidos dentro de códigos cortos, como se puede ver en la API de código corto . Sin embargo, es posible usar códigos cortos de encierro que permitirán usar corchetes. Déjame demostrar esto:
Código corto: [foo bar="No brackets here!"]...use [brackets] here[/foo]
Puedes agregar este tipo de código abreviado en tu functions.php
de esta manera:
add_shortcode( 'foo', 'foo_shortcode' );
function foo_shortcode( $atts, $content = null ) {
extract( shortcode_atts(
array(
'bar' => '',
), $atts )
);
return '<p>' . $bar . ' ' . $content . '</p>';
}
También es posible ejecutar el contenido entre corchetes como otro código abreviado:
Código corto: [foo bar="No shortcodes here!"]...use [shortcodes] here[/foo]
add_shortcode( 'foo', 'execute_foo_shortcode' );
function execute_foo_shortcode( $atts, $content = null ) {
extract( shortcode_atts(
array(
'bar' => '',
), $atts )
);
return '<p>' . $bar . ' ' . do_shortcode($content) . '</p>';
}
Pero seamos sencillos. ¿Por qué no agregar los corchetes dentro del shortcode en sí?
Código corto: [foo bar="shortcode"]
Y dentro de tu functions.php
add_shortcode( 'foo', 'build_foo_shortcode' );
function build_foo_shortcode( $atts ) {
extract( shortcode_atts(
array(
'bar' => '',
), $atts )
);
if ( isset( $bar ) ) :
return '<p>' . do_shortcode( '[' . $bar . ']' ) . '</p>';
endif;
}
Si desea permanecer con su tipo de código abreviado, puede ir entre los corchetes y agregar algo similar, para reconocerlo y reemplazarlo a través de expresiones regulares:
Código corto: [foo bar="Use your ___shortcode___ here"]
Dentro de su functions.php
puede reemplazar ___shortcode___
con [shortcode]
y nuevamente ejecutarlo a través de do_shortcode()
add_shortcode( 'foo', 'regex_foo_shortcode' );
function regex_foo_shortcode( $atts ) {
extract( shortcode_atts(
array(
'bar' => '',
), $atts )
);
if ( isset( $bar ) ) :
$foo_bar = preg_replace_callback("/(.*)_{3}(.*)_{3}(.*)/", function($m) {
return $m[1] . do_shortcode('[' . $m[2] . ']') . $m[3];
}, $bar);
return '<p>' . $foo_bar . '</p>';
endif;
}
Está bien, ahora es un poco complicado, ¿no? Otro enfoque (si no desea seguir haciéndolo a través de códigos cortos) sería campos personalizados. Los campos personalizados están disponibles por defecto y se pueden activar a través de Opciones de pantalla .
Puede usar the_meta () o puede obtenerlo a través de get_post_meta () para mostrarlos fácilmente dentro de su tema. Además, es más fácil (en comparación con los códigos cortos) manejar la entrada y la salida, y ninguno de los editores tiene que recordar todos los códigos cortos disponibles.
También puede generar campos personalizados avanzados fácilmente a través de la interfaz de un complemento o cree y diseñe su estilo por su cuenta . De todos modos, tendrá bonitos campos de entrada debajo o al lado de su editor de texto sin limitaciones (incluso carga de archivos, selector de fechas ...). Se verá algo como esto: