Desculpe, os colchetes ainda não são permitidos dentro de códigos de acesso, como você pode ver na API de código de acesso . No entanto, é possível usar códigos de acesso que permitem usar colchetes. Deixe-me demonstrar isso:
Shortcode: [foo bar="No brackets here!"]...use [brackets] here[/foo]
Você pode adicionar esse tipo de shortcode no seu functions.php
da seguinte forma:
add_shortcode( 'foo', 'foo_shortcode' );
function foo_shortcode( $atts, $content = null ) {
extract( shortcode_atts(
array(
'bar' => '',
), $atts )
);
return '<p>' . $bar . ' ' . $content . '</p>';
}
Também é possível executar o conteúdo dentro dos colchetes como outro código de acesso:
Shortcode: [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>';
}
Mas vamos simplificar. Por que não adicionar os colchetes dentro do próprio código de acesso?
Shortcode: [foo bar="shortcode"]
E dentro do seu 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;
}
Se você quiser ficar com seu tipo de shortcode, você pode contornar os colchetes e adicionar algo semelhante para reconhecê-lo e substituí-lo via regex:
Shortcode: [foo bar="Use your ___shortcode___ here"]
No seu functions.php
, você pode substituir ___shortcode___
por [shortcode]
e executá-lo novamente por meio 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;
}
Ok, é um pouco complicado agora, não é? Outra abordagem (se você não quiser continuar fazendo isso por meio de códigos de acesso) seria campos personalizados. Campos personalizados estão disponíveis por padrão e podem ser alternados através do Opções de tela .
Você pode usar o the_meta () ou obtê-lo via get_post_meta () função para produzi-los facilmente dentro do seu tema. Além disso, é mais fácil (em comparação com os códigos de acesso) manipular a entrada e a saída, e ninguém dos editores precisa se lembrar de todos esses códigos de acesso disponíveis.
Você também pode gerar campos personalizados avançados facilmente através da interface de um plugin ou construa e estilize-os por conta própria . De qualquer forma, você terá bons campos de entrada abaixo ou ao lado do seu editor de texto sem limitações (até mesmo upload de arquivos, datepicker ...). Será algo parecido com isto: