web-dev-qa-db-fra.com

Add of code in <head> page par/publication

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?

1
moobot

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.

4
sven

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 .

3
Jigar Gorakhiya

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 alternatename __/hreflangname__ 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 hreflangva avec quel alternatename__. Vous aurez besoin de construire votre propre méta-boîte pour cela.

1
s_ha_dum

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

0
oferwald

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.

0
Anjum