Intereting Posts
Как исключить пост из категории Отображение записей в блоге на странице (используя get_posts для извлечения сообщений)? Как экспортировать персонализированный тип сообщения с ACF в отдельный файл с автоматизацией? Если пользовательский тип сообщения Пользовательский тип сообщения и проблема с permalink Как планировать публикацию автопоста каждые 60 минут? получение идентификатора родительской страницы при использовании пользовательского меню. Проблема с свойством объекта $ post_id как создать собственный код или шаблон страницы администратора edit.php для моего пользовательского типа сообщений Загрузить изображение src через Ajax по ID? Получить имя навигационного меню текущей позиции (название названия) Изменить правильность разбивки на разные уровни URL Когда использовать _e и __ для перевода? Как конвертировать WordPress в SVN в тот, который не является? Создайте страницу параметров с двумя полями загрузки изображений

Добавить код в <head> для каждой страницы / публикации

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

У меня есть многоязычный веб-сайт, и мне нужно реализовать разметку rel = "alternate" 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="" /> 

Может ли кто-нибудь указать мне в правильном направлении, чтобы исправить эти проблемы?

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

 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 }//end of if }//end of if }//end of function 

Если нет $ alternate и $ hreflang, то ссылки не будет.

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

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

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

Я не знаю, как вы сохраняете свои данные, но при условии, что вы используете встроенный мета-поле «Пользовательские поля», ваши многочисленные альтернативные страницы должны появляться в виде массива.

 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 . Для этого вам понадобится создать свой мета-ящик.

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

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

Удачи

извините за это у меня нет 50 репутации, чтобы добавить комментарий

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

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

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