Adăugare cod în <head> pentru fiecare pagină/post individual

16 aug. 2013, 12:53:54
Vizualizări: 16.9K
Voturi: 4

Există vreun plugin (sau o modalitate simplă) de a adăuga cod în secțiunea <head> pentru fiecare pagină/post individual?

Am un site multilingv și trebuie să implementez markup-ul rel="alternate" hreflang, așa că am nevoie de o modalitate de a defini rel="alternate" individual pentru fiecare pagină/post.

Am căutat printre plugin-urile WordPress dar nu am găsit nimic până acum. Nu sunt programator, așa că nu pot crea ceva singur, decât dacă ar fi destul de simplu!

ACTUALIZARE

OK, încerc să creez eu un câmp personalizat pentru această funcționalitate, iată ce am făcut până acum:

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

Acest cod funcționează bine dacă vreau să adaug o singură pagină alternativă. Când încerc să adaug mai multe, se adaugă doar o singură instanță de rel="alternate", cu ultima adăugată înlocuind-o pe cea originală.

De asemenea, pe paginile unde nu am definit aceste câmpuri personalizate, primesc un tag gol:

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

Poate cineva să mă îndrume în direcția corectă pentru a rezolva aceste probleme?

2
Comentarii

Acesta este plugin-ul perfect de care ai nevoie https://wordpress.org/plugins/header-and-footer-scripts/

Niresh Niresh
17 oct. 2015 06:48:52

Nu sunt dezvoltator, dar am avut nevoie să adaug cod în secțiunea <head> pentru a încorpora postări Google în postări individuale WordPress (nu pagini). În instrucțiunile de încorporare Google se precizează "adaugă această parte în secțiunea <head>, iar această parte acolo unde dorești ca postarea să apară în blog" (nu sunt cuvintele exacte). Nu aveam idee ce este secțiunea Head, deoarece sunt un utilizator obișnuit WordPress și nu un programator. Dar o căutare de plugin-uri a adus acest rezultat: http://wordpress.org/plugins/per-page-add-to/ Sper că te ajută.

User User
25 iun. 2014 03:33:02
Toate răspunsurile la întrebare 5
0

După cum ai menționat pe bază de pagină/postare, acest lucru ar funcționa pentru fiecare postare

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

Dacă nu există $alternate și $hreflang, atunci nu va fi afișat niciun link.

16 aug. 2013 14:29:03
0

Utilizați codul de mai jos în secțiunea <head>:

<?php
add_action('wp_head', 'your_function');
function your_function() {    
    //codul tău va fi aici
} 
?>

Pentru mai multe informații, puteți vizita aici.

16 aug. 2013 12:59:44
0

Nu știu cum salvezi datele tale, dar presupunând că folosești caseta meta încorporată "Câmpuri Personalizate", paginile tale alternative multiple ar trebui să apară ca un array.

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

Totuși, văd o problemă potențială. Dacă dorești să ai mai multe perechi asociate alternate/hreflang pe postare, atunci trebuie să le salvezi ca perechi în baza de date. Altfel, nu va exista nicio modalitate de a ști care hreflang se potrivește cu care alternate. Va trebui să-ți construiești propria casetă meta pentru asta.

16 aug. 2013 16:56:56
6

Îmi cer scuze pentru aceasta, nu am 50 de reputație pentru a adăuga un comentariu

Răspunsul lui dot1 este perfect pentru includerea legăturii alternative în secțiunea head, obținând valoarea din metadatele postului, dar acum trebuie să adăugați câmpuri personalizate pentru hreflang și valori alternative pentru fiecare pagină/post din ecranul de editare sau să creați o casetă meta pentru a face acest lucru.

    // adăugarea meta-box-ului pentru legătura alternativă în WordPress
add_action( 'admin_init', 'add_my_link_metabox' );

// Adaugă meta-box
function add_my_link_metabox() {
    // pentru postări
    add_meta_box( 'link_meta_box', __( 'Atribute Legătură Alternativă', 'Domeniul Tău de Text' ), 'my_link_data_function', 'post', 'side', 'core' );
    // pentru pagini
    add_meta_box( 'link_meta_box', __( 'Atribute Legătură Alternativă', 'Domeniul Tău de Text' ), 'my_link_data_function', 'page', 'side', 'core' );
}


// creează o funcție pentru afișarea meta-box-ului
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);

   // generează HTML pentru meta-box ?>
   <div class="admin-inside-box">
        <p>
            <input type="hidden" name="my_meta_nonce" value="<?php echo wp_create_nonce( basename(__FILE__) ); ?>" />
        </p>

        <p>
            <label>Legătură alternativă</label>
            <input type="text" class="widefat" name="alternate" value="<?php echo $alternate; ?>" />
        </p>

        <p>
            <label>hreflang</label>
            <input type="text" class="widefat" name="hreflang" value="<?php echo $hreflang; ?>" />
        </p>
   </div>
   <?php
}

   // acum salvează datele meta-box la salvarea postului
   // conectează la acțiunea save_post
   add_action( 'save_post', 'save_my_link_data' );

  // creează funcție pentru salvarea valorilor
  function save_my_link_data() {
     global $post, $post_id;

     // verifică nonce
     if ( !wp_verify_nonce( $_POST['my_meta_nonce'], basename(__FILE__) ) ) {
         return $post_id;
     }

     // verifică dacă utilizatorul curent poate edita postul
     if ( !current_user_can( 'edit_post', $post_id ) ) {
         return $post_id;
     }

     // acum salvează/actualizează valorile în câmpurile meta ale postului
     update_post_meta( $post_id, 'alternate', $_POST['alternate'] );
     update_post_meta( $post_id, 'hreflang', $_POST['hreflang'] );
  }

  // conectează legătura alternativă în 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
       }
     }
  }

Sper că acest lucru vă va ajuta, puteți modifica numele funcțiilor etc.

16 aug. 2013 15:02:32
Comentarii

Se adaugă asta în functions.php? Am adăugat-o la început și am primit o eroare: Parse error: syntax error, unexpected '<' in /xxxxxxxxx/functions.php on line 2

moobot moobot
22 aug. 2013 12:58:27

modificat și acum funcționează, adaugă asta și codul lui dot1 în functions.php

Anjum Anjum
22 aug. 2013 18:48:24

Hmm, primesc o eroare de parsare ori de câte ori adaug codul tău sau al lui Dot în functions.php

moobot moobot
27 aug. 2013 10:23:54

@moobot oh eroare de parsare pe ce număr de linie? și trebuie să adaugi ambele coduri, al meu și al lui Dot

Anjum Anjum
27 aug. 2013 11:31:50

@moobot am editat și combinat codurile, copiază și lipește codul de mai sus în functions.php al temei tale și spune-mi înapoi.

Anjum Anjum
27 aug. 2013 11:41:57

OK minunat, se pare că acum funcționează, dar trebuie să pot adăuga mai multe tag-uri pentru fiecare pagină, deoarece așa funcționează tag-urile rel="alternate". Trebuie să faci referire la alternative și la pagina în sine.

moobot moobot
21 oct. 2013 13:16:29
Arată celelalte 1 comentarii
0

Dacă utilizați Transposh (Plugin-ul pe care l-am dezvoltat) pentru gestionarea site-urilor multilingve, rel=alternate va fi adăugat automat (cu opțiunea de a-l dezactiva).

Cu toate acestea, motivul pentru care răspund la această întrebare este că, din experiența mea, rezultatele adăugării acestui tag au fost de fapt foarte slabe, așa că nu sunt sigur că adăugarea lui este de folos.

Mult succes

17 aug. 2013 12:17:20