Aggiungere codice in <head> su base per pagina/post

16 ago 2013, 12:53:54
Visualizzazioni: 16.9K
Voti: 4

Esiste un plugin (o un metodo abbastanza semplice) per aggiungere codice alla sezione <head> su base per pagina/post?

Ho un sito multilingue e devo implementare il markup rel="alternate" hreflang, quindi ho bisogno di un modo per definire rel="alternate" individualmente su ogni pagina/post.

Ho cercato tra i plugin di WordPress ma finora non ho trovato nulla. Non sono un programmatore quindi non posso creare qualcosa da solo, a meno che non sia piuttosto semplice!

AGGIORNAMENTO

OK, sto provando a creare un campo personalizzato per questa funzionalità, ecco cosa ho fatto finora:

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

Questo funziona bene se voglio aggiungere solo una pagina alternativa. Quando provo ad aggiungerne altre, viene aggiunta solo un'istanza di rel="alternate", con l'ultima aggiunta che sostituisce l'originale.

Inoltre, su tutte le pagine in cui non ho definito questi campi personalizzati, ottengo un tag vuoto:

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

Qualcuno può indicarmi la direzione giusta per correggere questi problemi?

2
Commenti

Questo è ciò di cui hai bisogno, un plugin perfetto https://wordpress.org/plugins/header-and-footer-scripts/

Niresh Niresh
17 ott 2015 06:48:52

Non sono uno sviluppatore ma avevo bisogno di aggiungere codice all'area <head> per incorporare post Google in singoli post WordPress (non pagine). In un post Google, le istruzioni per l'incorporamento includono "aggiungi questa parte alla sezione <head>, aggiungi questa parte dove vuoi che il post appaia nel tuo blog" (non sono le parole esatte). Non avevo idea di cosa fosse la sezione Head, dato che sono un normale utente WordPress e non un programmatore. Ma una ricerca di plugin ha portato a questo risultato: http://wordpress.org/plugins/per-page-add-to/ Spero che questo aiuti.

User User
25 giu 2014 03:33:02
Tutte le risposte alla domanda 5
0

Come hai detto su base per pagina/articolo, questo funzionerebbe per ogni articolo

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

Se non ci sono $alternate e $hreflang allora non verrà aggiunto alcun link.

16 ago 2013 14:29:03
0

Utilizza il codice seguente nella sezione <head>:

<?php
add_action('wp_head', 'your_function');
function your_function() {    
    //il tuo codice andrà qui
} 
?>

Per maggiori informazioni puoi visitare qui.

16 ago 2013 12:59:44
0

Non so come stai salvando i tuoi dati, ma assumendo che tu stia utilizzando il meta box integrato "Campi personalizzati", le tue pagine alternate multiple dovrebbero arrivare come 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');

Tuttavia, vedo un potenziale problema. Se vuoi avere più coppie di alternate/hreflang associate per post, allora devi salvarle come coppie nel database. Altrimenti, non ci sarà modo di dire quale hreflang corrisponde a quale alternate. Dovrai costruire il tuo meta box personalizzato per questo.

16 ago 2013 16:56:56
6

scusa per questo, non ho 50 reputazione per aggiungere un commento

La risposta di dot1 è perfetta per includere il link alternativo nella sezione head ottenendo il valore dai post meta, ma ora devi aggiungere chiavi meta personalizzate per hreflang e valori alternativi per ogni pagina/post dalla schermata di modifica del post o creare un meta box per farlo.

    // hook del meta box per i link alternativi in WordPress
add_action( 'admin_init', 'add_my_link_metabox' );

// Aggiungi meta box
function add_my_link_metabox() {
    // per i post
    add_meta_box( 'link_meta_box', __( 'Attributi Link Alternativo', 'Your Text Domain' ), 'my_link_data_function', 'post', 'side', 'core' );
    // per le pagine
    add_meta_box( 'link_meta_box', __( 'Attributi Link Alternativo', 'Your Text Domain' ), 'my_link_data_function', 'page', 'side', 'core' );
}


// crea una funzione per visualizzare il 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);

   // genera html per il 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 alternativo</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
}

   // ora salva i dati del metabox al salvataggio del post
   // hook nell'azione save_post
   add_action( 'save_post', 'save_my_link_data' );

  // crea funzione per salvare i valori
  function save_my_link_data() {
     global $post, $post_id;

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

     // controlla se l'utente corrente può modificare il post
     if ( !current_user_can( 'edit_post', $post_id ) ) {
         return $post_id;
     }

     // ora salva/aggiorna i valori nelle chiavi meta del post
     update_post_meta( $post_id, 'alternate', $_POST['alternate'] );
     update_post_meta( $post_id, 'hreflang', $_POST['hreflang'] );
  }

  // hook per il link alternativo in 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
       }
     }
  }

spero che questo ti aiuti, puoi cambiare i nomi delle funzioni ecc.

16 ago 2013 15:02:32
Commenti

Questo va nel file functions.php? L'ho aggiunto all'inizio e ho ottenuto un errore: Parse error: syntax error, unexpected '<' in /xxxxxxxxx/functions.php on line 2

moobot moobot
22 ago 2013 12:58:27

modificato e ora funziona, aggiungi questo e il codice di dot1 nel functions.php

Anjum Anjum
22 ago 2013 18:48:24

Hmm, ottengo un errore di parsing ogni volta che aggiungo il tuo codice o quello di Dot nel mio functions.php

moobot moobot
27 ago 2013 10:23:54

@moobot oh errore di analisi su quale numero di riga? e devi aggiungere entrambi i codici, il mio e quello di Dot

Anjum Anjum
27 ago 2013 11:31:50

@moobot ho modificato e combinato i codici, copia e incolla il codice sopra nel functions.php del tuo tema e fammi sapere.

Anjum Anjum
27 ago 2013 11:41:57

OK perfetto, sembra funzionare ora, ma ho bisogno di poter aggiungere più tag per ogni pagina perché è così che funzionano i tag rel="alternate". Devi fare riferimento agli alternativi e alla pagina stessa.

moobot moobot
21 ott 2013 13:16:29
Mostra i restanti 1 commenti
0

Se stai utilizzando Transposh (il plugin che ho sviluppato) per gestire i tuoi siti multilingue, il rel=alternate verrà aggiunto automaticamente (con l'opzione per disabilitarlo).

Tuttavia, il motivo per cui rispondo è che, nella mia esperienza, i risultati dell'aggiunta di questo tag sono stati davvero deludenti, quindi non sono sicuro che aggiungerlo sia utile.

Buona fortuna

17 ago 2013 12:17:20