Je n'ai pas trouvé de questions similaires comme la mienne, donc j'espère que quelqu'un pourra m'expliquer ce que je fais mal.
Je voudrais faire écho aux champs personnalisés de wordpress via une fonction. Voici ce que je fais:
function add_meta_data() {
if ( is_page() ) {
echo'<meta property="og:title" content="' . get_post_meta( $post_id, 'og_title', true ) . '">';
}
add_action('wp_head','add_meta_data',1);
3 Réponses :
utilisez cette fonction avec l'identifiant de publication /
get_post_meta( $post->ID, 'your_meta_key', true );
Merci
Si vous enregistrez le og_title via get_post_meta dans db, vous aurez certainement le og_title. Mais il semble que vous ne transmettez pas le post_id qui est obligatoire.
Veuillez consulter le document mentionné sur WP
https://developer.wordpress.org/reference/functions/get_post_meta/ a>
Vous devez mettre le post_id pour obtenir les métadonnées. Voir le code ci-dessous
function add_meta_data() { if ( is_page() ) { echo'<meta property="og:title" content="' . get_post_meta($post_id ,'og_title' ) . '">'; } add_action('wp_head','add_meta_data',1);
si vous voulez aller plus loin, si le champ personnalisé og_title
n'est pas défini, utilisez le titre de la page actuelle comme solution de secours au lieu de laisser la propriété vide
Oui, vous pouvez utiliser le même. Même dans la plupart des cas, le titre est utilisé comme og_title. pour la description de l'og, vous pouvez utiliser l'extrait de post.
@Kevin Je comprends, mais c'est le cas, je veux injecter un titre différent pour le og
que le titre existant pour la page. J'ai essayé votre proposition, mais cela se traduit également par une balise meta vide.
@Demian essaie d'abord d'imprimer la sortie et vérifie quelle est la sortie? print_r (get_post_meta ($ post_id, 'og_title'));
Vérifiez également votre table wp_postmeta et vérifiez que le og_title pour le post_id existe ou non? Sinon, la fonction ne fonctionnera pas.
@Rohit il est probable qu'il n'existe pas dans wp_postmeta
. Mes limitations dans la connaissance de php pensaient que l'enregistrement d'un champ personnalisé ferait cela, donc cela signifie que je dois d'abord l'injecter dans wp_postmeta
?
Youps, vous devez d'abord l'enregistrer dans wp_postmeta en utilisant la fonction add_post_meta. Ce n'est qu'alors que vous pouvez obtenir le og_title.
@Rohit Je comprends maintenant, c'est là que se trouve mon erreur et je n'ai pas pu trouver cela dans la documentation WP.
@Rohit J'ai vérifié postmeta et je vois cette capture d'écran wp_postmeta
Alors maintenant, essayez de faire écho à cette fonction - print_r (get_post_meta ('9145', 'og_title')); où 9145 est votre post_id. Voyez ce qui se passe?
Il vous manque juste post_id. Les données sont enregistrées dans la base de données.
@Rohit J'ai trouvé que le problème $ post_id
n'est pas défini, c'est pourquoi il y a une balise meta vide sur le frontend.
L'erreur que j'ai faite dans la fonction est que $ post_id
n'est pas défini, car ce n'est pas une variable globale. Ce qu'il faut faire est:
function add_meta_data() { if ( is_page() ) { $post_id = get_the_id(); echo'<meta property="og:title" content="' . get_post_meta( $post_id, 'og_title', true ) . '">'; } add_action('wp_head','add_meta_data',1);
où est post_id dans get_post_meta?