it-swarm.com.de

Fügen Sie pro Seite/Beitrag Code in <head> ein

Gibt es ein Plugin (oder eine einfache Möglichkeit), um dem Abschnitt <head> Code pro Seite/Post hinzuzufügen?

Ich habe eine mehrsprachige Website und ich muss das rel = "alternative" hreflang-Markup implementieren , also brauche ich eine Möglichkeit, rel="alternate" individuell auf jeder Seite/jedem Beitrag zu definieren.

Ich habe die WordPress-Plugins durchsucht, aber noch nichts gefunden. Ich bin kein wirklicher Programmierer, kann also nicht selbst etwas erschaffen, es sei denn, es war ziemlich einfach!

UPDATE

OK, ich versuche selbst ein benutzerdefiniertes Feld für diese Funktionalität zu erstellen. Das habe ich bisher:

<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;
?>" />

Dies funktioniert nun einwandfrei, wenn ich nur eine alternative Seite hinzufügen möchte. Wenn ich versuche, weitere hinzuzufügen, wird nur eine Instanz von rel="alternate" hinzugefügt, wobei die zuletzt hinzugefügte das Original ersetzt.

Außerdem wird auf allen Seiten, für die ich keine dieser benutzerdefinierten Felder definiert habe, ein leeres Tag angezeigt:

<link rel="alternate" href="" hreflang="" />

Kann jemand mich bitte in die richtige Richtung weisen, um diese Probleme zu beheben?

1
moobot

Wie Sie pro Seite/Beitrag gesagt haben, würde dies für jeden Beitrag funktionieren

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
        }
    }
}

Wenn es kein $ alternate und $ hreflang gäbe, gäbe es keinen Link.

4
sven

Verwenden Sie den folgenden Code im Abschnitt <head>:

<?php
add_action('wp_head', 'your_function');
function your_function() {    
    //your code will go here
} 
?>

Weitere Informationen finden Sie unter hier .

3
Jigar Gorakhiya

Ich weiß nicht, wie Sie Ihre Daten speichern, aber unter der Annahme, dass Sie das eingebaute Metafeld "Benutzerdefinierte Felder" verwenden, sollten Ihre mehreren alternativen Seiten als Array angezeigt werden.

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');

Ich sehe jedoch ein potenzielles Problem. Wenn Sie mehrere alternate/hreflang Paare pro Post haben möchten, müssen Sie diese als Paare in der Datenbank speichern. Andernfalls können Sie nicht feststellen, welche hreflang zu welcher alternate passt. Dazu müssen Sie Ihre eigene Meta-Box erstellen.

1
s_ha_dum

Wenn Sie Transposh (das von mir entwickelte Plugin) verwenden, wird zur Verwaltung Ihrer mehrsprachigen Websites automatisch das rel = alternate hinzugefügt (mit der Option, es zu deaktivieren).

Der Grund, warum ich darauf antworte, ist, dass die Ergebnisse des Hinzufügens dieses Tags meiner Erfahrung nach tatsächlich miserabel waren, und ich bin mir nicht sicher, ob das Hinzufügen überhaupt hilfreich ist.

Viel Glück

0
oferwald

entschuldigung, ich habe nicht 50 Ruf, um einen Kommentar hinzuzufügen

Die Antwort von dot1 ist perfekt für das Einfügen eines alternativen Links in den Kopfbereich, um den Wert aus dem Post-Meta zu erhalten. Jetzt müssen Sie benutzerdefinierte Metaschlüssel für hreflang und alternative Werte für jede Seite/jeden Post aus dem Post-Bearbeitungsbildschirm hinzufügen oder ein Meta-Feld erstellen dafür, dies zu tun.

    // 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
       }
     }
  }

ich hoffe, dies wird Ihnen helfen, Sie können Funktionsnamen usw. ändern.

0
Anjum