Добавьте код в <голову> на на основание страницы/сообщения

Есть ли плагин (или easyish путь) для добавления кода к <head> раздел по на основание страницы/сообщения?

У меня есть многоязычный веб-сайт, и я должен реализовать рэл =, "чередуют" hreflang разметку, так нуждаются в способе определить rel="alternate" индивидуально на каждой странице/сообщении.

Я искал плагины WordPress, но не нашел вещи к настоящему времени. Я не действительно кодер, так не может создать что-то сам, если это не было довольно легко!

ОБНОВЛЕНИЕ

Хорошо, я делаю попытку, сам пытаясь создать пользовательское поле для этой функциональности, это - то, что я имею до сих пор:

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

Теперь это хорошо работает, если я только хочу добавить одну альтернативную страницу. Когда я попытаюсь добавить больше, это только добавит один экземпляр rel="alternate", с последней добавленной заменой оригинала.

Кроме того, на любых страницах, что я не определил ни одного из этих пользовательских полей, я получаю пустой тег:

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

Кто-то может указать на меня в правильном направлении для исправления этих проблем?

2
12.09.2014, 14:59
5 ответов

Как Вы сказали на основание страницы/сообщения, это будет работать на каждое сообщение

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

Если бы нет никакого $alternate и $hreflang затем не было бы никакой ссылки.

5
19.02.2020, 22:23

Используйте ниже кода в <head> раздел:

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

Для получения дополнительной информации можно посетить здесь.

3
19.02.2020, 22:23

Я не знаю, как Вы сохраняете свои данные, но предполагаете использование созданного в "Пользовательских Полях" meta, упаковывают несколько альтернативных страниц, должен проникнуть как массив.

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

Однако я вижу потенциальную проблему. Если Вы должны иметь, несколько связались alternate/hreflang пары по почте, затем необходимо сохранить их как пар в базе данных. Если Вы не сделаете, не будет никакого способа сказать который hreflang идет с который alternate. Необходимо будет создать собственное meta поле для этого.

1
19.02.2020, 22:23

Если Вы будете использовать Трансшикарный (Плагин, который я разработал) Для управления Вашими многоязычными сайтами, то rel=alternate будет добавлен автоматически (с опцией отключить его)

Однако причина, я отвечаю на это, то, что, по моему опыту, результаты добавления этого тега на самом деле были плачевны, таким образом, я не уверен, что добавление его полезно вообще.

Удачи

0
19.02.2020, 22:23

жаль об этом у меня нет 50 репутаций для добавления комментария

ответ dot1 идеально подходит для, включают альтернативу ссылки в главный раздел, получают значение из сообщения meta, но теперь необходимо добавить пользовательские метаклавиши для hreflang, и альтернативные значения для каждой страницы/сообщения от постредактирования экранируют или создают meta поле для сделать это.

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

надежда это поможет Вам, можно изменить имена функций и т.д.

0
19.02.2020, 22:23
  • 1
    Doos это входит в functions.php? Я добавил его к вершине и получил ошибку: Ошибка анализа: синтаксическая ошибка, неожиданная' <' в/xxxxxxxxx/functions.php на строке, 2 сообщения ошибки SQL –  moobot 22.08.2013, 12:58
  • 2
    и теперь работа, добавляет код этого и dot1 в functions.php –  Anjum 22.08.2013, 18:48
  • 3
    Хм, я получаю ошибку анализа, когда когда-либо я добавляю или Ваш код или код Точек к моему functions.php –  moobot 27.08.2013, 10:23
  • 4
    @moobot, о, ошибка анализа, на который номер строки? и необходимо добавить, что обе шахты кодов и –  Anjum 27.08.2013, 11:31
  • 5
    @moobot Dot отредактировали и объединили коды, копию и вставку выше кода в functions.php темы и говорят мне назад. –  Anjum 27.08.2013, 11:41

Теги

Похожие вопросы