PERGUNTA E RESPOSTA REVISITAS
Às vezes, existem perguntas que o incomodam e caçam mais tarde na vida novamente, e essa é uma dessas perguntas.
Essa pergunta me fez pensar em uma solução alternativa para o problema. Como já afirmei, campos personalizados e meta boxes estão lá para armazenar pequenos pedaços de metadados, e não para atuar como uma extensão para postar conteúdo onde você pode executar códigos de acesso e funções. Além disso, como já afirmei, seu método está incorreto e não deve ser usado
O que achei interessante em sua postagem é que você usou campos personalizados e meta boxes para exibir inadvertidamente conteúdo personalizado da entrada do usuário. Então, sentei-me e pensei em uma maneira possível de fazer isso funcionar e usar os dados de campo personalizados e os dados da meta-caixa corretamente
Esta é a minha ideia:
O CENÁRIO:
NOTA: Isso pode ser modificado para atender a qualquer necessidade
Em uma única postagem, um usuário deseja / exige a exibição dinâmica de conteúdo personalizado após a postagem para atender às suas necessidades. Isso deve ser dinâmico. O conteúdo deve ser uma consulta personalizada e o usuário precisa escolher o que mostrar sempre que quiser e o que quiser
A POSSÍVEL SOLUÇÃO:
Os códigos de acesso não funcionarão aqui, pois os códigos de acesso não podem ser executados em campos personalizados. Tampouco do_shortcode
funcionará, pois não é dinâmico e está codificado permanentemente, algo que não queremos. Como em sua pergunta, vamos fazer uso de campos personalizados. Mais uma vez enfatizo, não use o campo personalizado para executar uma consulta ou códigos de acesso personalizados
O PLANO:
Usaremos o campo personalizado para salvar apenas nossos argumentos de consulta, isso é tudo. Então, o que fazemos é criar um campo personalizado chamado custom_query_arguments
. Na tela do editor de postagem, agora você verá seu campo personalizado, pronto para uso
O próximo passo será adicionar nossos argumentos de consulta personalizados ao nosso campo. Digamos que precisamos mostrar 3 postagens da categoria 1 classificadas por título. Portanto, nossos argumentos de consulta devem ficar assim: ( No formato de string )
'posts_per_page=3&cat=1&orderby=title'
Agora é isso que você deve inserir no seu campo personalizado. Depois de inserido, salve o valor do seu campo personalizado
O próximo passo será construir a consulta personalizada no seu single.php. O que é necessário aqui, precisamos obter o valor do nosso campo personalizado, que é na verdade nossos argumentos de consulta, e alimentá-lo para uma nova instância de WP_Query
recuperar as postagens. Também precisamos verificar se realmente temos um valor salvo nesse campo personalizado, se o campo personalizado estiver vazio, não mostraremos nada
O CÓDIGO:
Você pode tentar algo assim no single.php logo após o único post.
$args = get_post_meta( get_queried_object_id(), 'custom_query_arguments', true );
// check if the custom field has a value
if( ! empty( $args ) ) {
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}
}
Se o usuário deseja remover a consulta personalizada, ele pode simplesmente excluir o valor do campo personalizado e deixar o campo personalizado em branco. Se ele precisar mostrar a mesma consulta, mas da categoria 10 e um total de 5 postagens, ele poderá substituir o valor original pelo seguinte
'posts_per_page=5&cat=10&orderby=title'
Algumas notas:
É importante usar a sintaxe e o formato corretos ao inserir informações nesses campos e meta boxes personalizados. Erros de sintaxe ou informações incorretas levarão a resultados indesejados ou até a erros fatais. É importante informar seus clientes sobre essas informações
RESPOSTA ORIGINAL
Não entendo o que você está tentando realizar, mas pelo que posso lhe dizer, essas são duas coisas separadas
OPÇÃO 1
apply_filters('the_content', $content);
é usado para aplicar os filtros de conteúdo ao conteúdo de postagem não filtrado bruto, que geralmente vem do uso de $post->post_content
. Esses filtros incluem o famoso filtro wp_autop
que adiciona tags p aothe_content()
apply_filters('the_content', $content);
é geralmente usado em conjunto com o local get_posts
onde se trabalha diretamente com os WP_Post
objetos sem usar, o setup_postdata( $post )
que torna as tags do modelo the_content()
disponíveis para uso
OPÇÃO 2
do_shortcode
é usado para adicionar um código de acesso em qualquer lugar nos arquivos de modelo fora do editor de texto no backend da tela do editor de páginas, basicamente filtrando códigos de acesso através de seus ganchos.
O uso correto é o seguinte
Exemplo: Adicionando o Shortcode da Galeria em um Arquivo de Modelo
echo do_shortcode( '[gallery]' )
EDIT 1
Pelos seus comentários, eu não usaria um código abreviado.
Se você não deseja adicionar um código curto através do editor de texto e adicioná-lo diretamente (código rígido) do_shortcode
em um arquivo de modelo, prefiro adicionar a função ao modelo
Exemplo:
Se você tiver a seguinte função de código curto
function footag_func( $atts ) {
return "foo = {$atts['foo']}";
}
add_shortcode( 'footag', 'footag_func' );
Você pode simplesmente chamar a função diretamente em um modelo como
echo footag_func();
É muito mais rápido, pois o código curto não precisa ser analisado
EDIT 2
Para ser honesto aqui, você está fazendo isso errado completamente em sua edição. Por isso não entendi sua pergunta inicial
Às vezes, preciso adicionar meta meta em tipos de postagem / páginas / post personalizado, para que eles possam adicionar códigos de acesso (controle deslizante, formulário de contato etc.) ou apenas um texto simples. É um texto arquivado.
Para fazer o shortcode funcionar, eu uso a opção 1 .....
Os campos personalizados não são campos de texto e certamente não devem ser usados para executar códigos de acesso e, nesse caso, controles deslizantes ou formulários de contato. Os campos personalizados nunca devem ser usados para substituir o editor de texto em postagens e páginas.
Como afirmei anteriormente, apply_filters('the_content', $content);
deve ser usado para aplicar a formatação ao conteúdo de postagem bruto.
Você tem duas opções aqui
Use do_shortcode
diretamente em arquivos de modelo, o que eu não recomendaria, pois o uso da função é mais rápido, pois o código curto não precisa ser analisado
Use o código de acesso diretamente no editor de texto para a página / publicação específica
Eu seriamente recomendo que você dê uma nova olhada em suas estruturas e no que deseja alcançar. Os campos personalizados não são editores de texto e não podem executar códigos de acesso ou controles deslizantes.
Minha recomendação seria procurar talvez widgets personalizados ou um sistema que você possa usar com campos personalizados