Intereting Posts
Как проверить роль пользователя? Удалить доступ к определенным меню администратора Повторная отправка пользовательской почты Создайте больше метабоксов по мере необходимости Постоянная ссылка: Пользовательские URL-адреса Условия отображения разделенные запятыми и гиперссылки Как исправить параметр входа в WordPress Закажите get_terms несколькими meta_values Как я могу отобразить описание изображения из галереи изображений? Пользовательские типы сообщений. Есть ли недостатки / преимущества в использовании плагина для их разработки? Запретить сохранение сообщения без предоставления заголовка Включить администратора для сортировки пользовательской таксономии WordPress API – количество сообщений Страница только для членов WordPress со ссылкой, видимой только для участников как добавить флажок, чтобы автоматически перенести сообщение?

Добавить код в <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="" /> 

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

Solutions Collecting From Web of "Добавить код в <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 }//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 } } } 

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