Je voudrais savoir s'il est possible pour moi de manipuler la sortie de wp_head ()?
En ce moment, j'utilise le plugin Yoast SEO pour ajouter des tags sociaux à mes messages (og: *).
Maintenant, ce site est un remake d’un blog plus ancien basé sur umbraco, et la structure de permalien étant différente, les anciennes URL sont donc 301 plus récentes que les nouvelles. Toutefois, cela nécessite que l’ancienne URL conserve le bon nombre. Nous avons donc un champ personnalisé qui fournit le "addthis: url" lorsque requis ... Malheureusement, Facebook et Twitter n'utilisent pas cette URL, mais ils utilisent les balises méta des pages "og: url" fournies par le plug-in (qui pointe vers la nouvelle URL), et semble qu'il ne peut pas être manipulé dans le post.
Mon idée est qu'avant d'imprimer wp_head, je voudrais fondamentalement faire une recherche et remplacer pour changer ce "og: url" pour en corriger un, mais je n'ai pas trouvé le moyen de le faire ...
Donc, ce que je demande, c'est si mon idée est correcte et comment le faire, ou existe-t-il un meilleur moyen/officiel de résoudre cette solution?
J'ai réussi à trouver ce post: https://wordpress.stackexchange.com/a/75168/45611
Il avait fondamentalement ce dont j'avais besoin.
/*
* This whole block here changes the og:url that Wordpress Seo Yoast provides
* It uses the addthis_share_url custom field, and if it is not present, it defaults
* to the permalink, just like the plugin does.
*/
add_action('get_header', 'blog_template_add_ob_start');
add_action('wp_head', 'blog_template_add_ob_end_flush', 100);
function blog_template_add_ob_start() {
ob_start('blog_template_add_filter_wp_head_output');
}
function blog_template_add_ob_end_flush() {
ob_end_flush();
}
function blog_template_add_filter_wp_head_output($output) {
$altUrl = get_post_custom_values('addthis_share_url')[0];
$url = get_permalink();
if ($altUrl && is_single()) {
$output = str_ireplace('<meta property="og:url" content="' . $url . '" />', '<meta property="og:url" content="' . esc_attr(esc_url($altUrl)) . '" />', $output);
}
return $output;
}
Merci les gens, vous avez été utile!
Les informations attachées au point d'ancrage de l'action wp_head
sont echo
ed (si elles doivent être echo
ed) au moment où elles se produisent. Il n'y a pas de chaîne de contenu "wp_head" que vous pouvez rechercher et remplacer.
Ou essayez la mise en mémoire tampon de sortie autour de wp_head
:
ob_start();
wp_head();
$head = ob_get_contents();
ob_end_clean();
echo $head;
Vous pouvez par exemple faire l'une des choses suivantes:
wp_head
et affichez vos propres méta-informations. Cela pourrait être défini comme un post meta .// Modifier
Je viens d'avoir un bref aperçu du plugin.
Si vous voulezalterthe og:url
, vous pouvez le faire comme ceci:
if (is_single()) {
remove_action('wpseo_opengraph', array('WPSEO_OpenGraph', 'url'), 12);
add_action('wpseo_opengraph', 'wpse_131062_my_og_url', 12);
}
function wpse_131062_my_og_url() {
// this post meta has to be set up and filled by you!
if ($url = get_post_meta('my_og_url')) {
?>
<meta property="og:url" content="<?php echo esc_attr(esc_url($url)); ?>" />
<?php
}
}
Ce code estnon testé, cependant.