Como conectar um filtro para capturar get_post_meta quando uma saída de campo personalizada é alternativa?
Eu preenchi um campo personalizado (metadados) em uma postagem, assim:
<!--:de-->Nominale spanning<!--:--><!--:zh/cn-->额定电压<!--:--><!--:en-->Arrester Accessories<!--:-->
Eu preciso obter essa saída traduzida, então, me perguntando como conectar-se a "get_post_meta" antes da saída de metadados.
Aqui está o que eu tentei por alguns dias, mas sem sorte.
function getqtlangcustomfieldvalue($metadata, $object_id, $meta_key, $single){
$fieldtitle="fields_titles";
if($meta_key==$fieldtitle&& isset($meta_key)){
//here is the catch, but no value has been passed
}
}
//Specify 4 arguments for this filter in the last parameter.
add_filter('get_post_metadata', 'getqtlangcustomfieldvalue', 10, 4);
Respostas:
Depois de muita brincadeira com isso, acho que encontrei uma solução bastante boa aqui. Sei que isso aconteceu mais de um ano depois que você perguntou, mas isso estava me incomodando e não consegui encontrar uma boa solução até agora.
O problema é que a função get_post_metadata não permite acessar o valor atual. Isso significa que você não é capaz de transformar o valor, basta substituí-lo. Eu precisava anexar o conteúdo a um meta-campo e onde ele foi produzido não permitia nenhum tipo de filtro.
Aqui está a minha solução, alterada para se adequar ao que essa pergunta faz:
Isso manterá intactos outros filtros get_post_metadata e permitirá a modificação do valor original.
fonte
Acabei de ter o mesmo problema e, usando seu código acima, eis como eu o resolvi:
Eu tentei usar apply_filters, get_metadata, get_post_meta diretamente dentro da função, mas eles não me permitiram manipular a saída resultante, então comecei a usar $ wpdb.
fonte
get_post_meta()
Aqui está a minha solução para filtrar a meta post. Isso então chama uma função personalizada para executar qualquer manipulação de dados necessária.
fonte