Comment accrocher un filtre pour attraper get_post_meta lors de l'alternance d'une sortie de champ personnalisé?
J'ai rempli un champ personnalisé (métadonnées) dans un message, comme ceci:
<!--:de-->Nominale spanning<!--:--><!--:zh/cn-->额定电压<!--:--><!--:en-->Arrester Accessories<!--:-->
J'ai besoin de traduire cette sortie, donc je me demande comment me connecter à "get_post_meta" avant la sortie des métadonnées.
Voici ce que j'ai essayé depuis quelques jours, mais pas de chance.
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);
Réponses:
Après avoir beaucoup gâché cela, je pense avoir trouvé une assez bonne solution ici. Je me rends compte que c'est plus d'un an après que vous ayez demandé, mais cela me dérangeait et je n'ai pas trouvé de bonne solution jusqu'à présent.
Le problème est que la fonction get_post_metadata ne vous permet pas d'accéder à la valeur actuelle. Cela signifie que vous ne pouvez pas transformer la valeur, remplacez-la simplement. J'avais besoin d'ajouter du contenu à un méta-champ et où il était sorti, je n'autorisais aucun filtre.
Voici ma solution, modifiée pour correspondre à ce que cette question demande:
Cela gardera intacts tous les autres filtres get_post_metadata et permettra la modification de la valeur d'origine.
la source
Juste eu le même problème et, en utilisant votre code ci-dessus, voici comment je l'ai résolu:
J'ai essayé d'utiliser apply_filters, get_metadata, get_post_meta directement dans la fonction, mais ils ne me permettaient pas de manipuler la sortie résultante, j'ai donc eu recours à $ wpdb.
la source
get_post_meta()
Voici ma solution pour filtrer les méta post. Cela appelle ensuite une fonction personnalisée pour effectuer toute manipulation de données requise.
la source