Existe-t-il un plugin (ou un moyen simple) d’ajouter du code à la section <head>
page par page/publication?
J'ai un site Web multilingue et je dois implémenter le rel = "substitut" balisage hreflang }, donc besoin d'un moyen de définir rel="alternate"
individuellement sur chaque page/publication.
J'ai cherché dans les plugins WordPress mais je n'ai rien trouvé jusqu'à présent. Je ne suis pas vraiment un codeur, je ne peux donc pas créer quelque chose moi-même, à moins que ce soit plutôt facile!
UPDATE
OK, je vais moi-même essayer de créer un champ personnalisé pour cette fonctionnalité, voici ce que j'ai pour l'instant:
<link rel="alternate" href="<?php
while (have_posts()) : the_post();
$alternate = get_post_meta($post->ID, 'alternate', false);
if ($alternate) {
echo $alternate[0];
}
endwhile;
?>" hreflang="<?php
while (have_posts()) : the_post();
$hreflang = get_post_meta($post->ID, 'hreflang', false);
if ($hreflang) {
echo $hreflang[0];
}
endwhile;
?>" />
Maintenant, cela fonctionne bien si je veux seulement ajouter une autre page. Lorsque j'essaie d'en ajouter plus, il ne fera qu'ajouter une instance de rel="alternate"
, la dernière ajoutée remplaçant l'original.
De plus, sur toutes les pages pour lesquelles je n'ai défini aucun de ces champs personnalisés, une balise vide apparaît:
<link rel="alternate" href="" hreflang="" />
Quelqu'un peut-il me diriger dans la bonne direction pour corriger ces problèmes?
Comme vous l'avez dit par page/poste, cela fonctionnerait pour chaque poste
add_action('wp_head', 'add_link_in_head');
function add_link_in_head()
{
global $post;
if(!empty($post))
{
$alternate = get_post_meta($post->ID, 'alternate', true);
$hreflang = get_post_meta($post->ID, 'hreflang', true);
if(!empty($alternate) && !empty($hreflang))
{
?>
<link rel="alternate" href="<?php echo $alternate; ?>" hreflang="<?php echo $hreflang; ?>" />
<?php
}
}
}
S'il n'y a pas $ substitute et $ hreflang alors il n'y aurait pas de lien.
Utilisez le code ci-dessous dans la section <head>
:
<?php
add_action('wp_head', 'your_function');
function your_function() {
//your code will go here
}
?>
Pour plus d'informations, vous pouvez visiter ici .
Je ne sais pas comment vous enregistrez vos données, mais en supposant que vous utilisiez la boîte à méta intégrée "Champs personnalisés", vos multiples pages de remplacement devraient apparaître sous forme de tableau.
function alternate_pages_links() {
global $post;
if (!is_singular()) {
return;
}
$pat = '<link rel="alternate" href="%s" hreflang="%s" />';
$lang = get_post_meta($post->ID, 'hreflang', true);
$alt = get_post_meta($post->ID, 'alternate');
if (!empty($alt) && !empty($lang)) {
foreach ($alt as $a) {
printf($pat,$a,$lang);
}
}
}
add_action('wp_head','alternate_pages_links');
Cependant, je vois un problème potentiel. Si vous souhaitez associer plusieurs alternate
name __/hreflang
name__ pairs per post, vous devez les enregistrer sous forme de paires dans la base de données. À moins que vous ne le fassiez, il n'y aura aucun moyen de dire quel hreflang
va avec quel alternate
name__. Vous aurez besoin de construire votre propre méta-boîte pour cela.
Si vous utilisez Transposh (le plugin que j'ai développé) Pour la gestion de vos sites multilingues, le rel = alter sera ajouté automatiquement (avec la possibilité de le désactiver)
Cependant, la raison pour laquelle je réponds à cela est que, selon mon expérience, les résultats de l'ajout de cette balise ont été catastrophiques. Je ne suis donc pas sûr que l'ajout soit utile.
Bonne chance
désolé pour cela je n'ai pas 50 ans de réputation pour ajouter un commentaire
La réponse de dot1 est parfaite pour inclure les liens alternatifs dans la section head obtenir la valeur de post meta, mais vous devez maintenant ajouter des clés méta personnalisées pour hreflang et des valeurs alternatives pour chaque page/publication à partir de l'écran d'édition post ou créer une méta-boîte. pour faire cela.
// alternate link meta box hook into WordPress
add_action( 'admin_init', 'add_my_link_metabox' );
// Add meta box
function add_my_link_metabox() {
// for posts
add_meta_box( 'link_meta_box', __( 'Alternate Link Attr', 'Your Text Domain' ), 'my_link_data_function', 'post', 'side', 'core' );
// for pages
add_meta_box( 'link_meta_box', __( 'Alternate Link Attr', 'Your Text Domain' ), 'my_link_data_function', 'page', 'side', 'core' );
}
// create a function to display metabox
function my_link_data_function() {
global $post, $post_id;
$alternate = get_post_meta($post->ID, 'alternate', true);
$hreflang = get_post_meta($post->ID, 'hreflang', true);
// generate html for metabox ?>
<div class="admin-inside-box">
<p>
<input type="hidden" name="my_meta_nonce" value="<?php echo wp_create_nonce( basename(__FILE__) ); ?>" />
</p>
<p>
<label>Link alternate</label>
<input type="text" class="widefat" name="alternate" value="<?php echo $alternate; ?>" />
</p>
<p>
<label>Link hreflang</label>
<input type="text" class="widefat" name="hreflang" value="<?php echo $hreflang; ?>" />
</p>
</div>
<?php
}
// now save metabox data on save post
// hook in save_post action
add_action( 'save_post', 'save_my_link_data' );
// create function to save values
function save_my_link_data() {
global $post, $post_id;
// verify nonce
if ( !wp_verify_nonce( $_POST['my_meta_nonce'], basename(__FILE__) ) ) {
return $post_id;
}
// check if current user can edit post
if ( !current_user_can( 'edit_post', $post_id ) ) {
return $post_id;
}
// now save/update the values in post meta keys
update_post_meta( $post_id, 'alternate', $_POST['alternate'] );
update_post_meta( $post_id, 'hreflang', $_POST['hreflang'] );
}
// hook alternate link into wp_head
add_action('wp_head', 'add_link_in_head');
function add_link_in_head(){
global $post;
if (!empty($post)) {
$alternate = get_post_meta($post->ID, 'alternate', true);
$hreflang = get_post_meta($post->ID, 'hreflang', true);
if (!empty($alternate) && !empty($hreflang)) { ?>
<link rel="alternate" href="<?php echo $alternate; ?>" hreflang="<?php echo $hreflang; ?>" /><?php
}
}
}
espérons que cela vous aidera, vous pourrez changer le nom des fonctions, etc.