Intereting Posts
создать объединенный запрос, например UNION, и использовать значения тега post post, такие как параметры Наилучший подход к вызову API для API при поступлении действия «Добавить в корзину» Показывать страницу «О нас» и «Контакты» при нажатии в верхнем меню. Удалить "Категория:", "Тег:", "Автор:" из the_archive_title Как использовать функцию WP switchEditors.switchto (this) JS в вашем собственном скрипте? как создавать сообщения о выходе сайта с отображаемым URL-адресом назначения pre_get_posts и BBPress в теме Swagger Скрыть пользовательскую таксономию от простого администратора Загрузка эскиза персонализированного сообщения в поток Morris.js для WordPress? Заказ загрузки страницы WP (включая виджеты, php, плагины, медиа, шаблоны и CSS) Мобильные пользователи перенаправлены на другую страницу при входе в систему, если не связаны с другим сообщением Как создать несколько виртуальных страниц? Отображать поле автора только на определенных должностях категории? обновить плагин в wordpress

Списки таксономии ссылаются на первый пост в этот срок

У меня есть пользовательский тип сообщений «художественные работы» и пользовательская таксономия «художников». На странице-artist.php я создал собственный список всех художников и хотел бы связать имя каждого художника с первым сообщением, связанным с этим термином, вместо того, чтобы перейти на страницу терминов. Это мой текущий код:

<?php while ( have_posts() ) : the_post(); ?> <?php $args = array( 'post_type' => 'artworks', // change this to the post type you registered 'posts_per_page' => 1, 'tax_query' => array( array( 'taxonomy' => 'artists', 'field' => 'id' ) ) ); $first_cat_post = get_posts($args); $terms = get_terms('artists', $args); // list artists alphabetically by last name $count = count($terms); $i=0; if ($count > 0) { $term_list = '<ul class="artist-list">'; foreach ($terms as $term) { $i++; // group terms by first letter $this_char = strtoupper(substr($term->name,0,1)); if ($this_char != $last_char) { $last_char = $this_char; $term_list .= '<li><h2>'.$last_char.'</h2></li>'; } $termid = 'artists_' . ($term->term_id); $termfirst = get_field('first_name', $termid); // link artist name with first work by that artist $term_list .= '<li><a href="' . get_term_link( $term->slug, $term->taxonomy ) . '" title="' . sprintf(__('View all post filed under %s', 'my_localization_domain'), $term->name) . '">' . $termfirst . ' ' . $term->name . '</a></li>'; } $term_list .= '</ul>'; echo $term_list; } ?><?php endwhile; // end of the loop. ?> 

Вот сайт dev . Прямо сейчас элементы списка терминов ссылаются на эту страницу терминов, но это 404. Этот ответ выглядит многообещающим , но я не знаю, какой файл шаблона для ввода кода. Я пробовал поставить этот код:

 <?php /* Redirect To First Child */ if (have_posts()) { while (have_posts()) { the_post(); $pagekids = get_pages("child_of=".$post->ID."&sort_column=menu_order"); $firstchild = $pagekids[0]; wp_redirect(get_permalink($firstchild->ID)); } } 

?>

в taxonomy-artist.php, но ничего не происходит.

Solutions Collecting From Web of "Списки таксономии ссылаются на первый пост в этот срок"

 // link artist name with first work by that artist $term_list .= '<li><a href="' . get_term_link( $term->slug, $term->taxonomy ) . '" title="' . sprintf(__('View all post filed under %s', 'my_localization_domain'), $term->name) . '">' . $termfirst . ' ' . $term->name . '</a></li><li>' . the_terms() . '</li>'; 

измените приведенные выше строки на

 $posts = get_posts(array( 'post_type' => 'artworks', 'numberposts' => 1, 'post_status' => 'publish', 'artists' => $term->slug, 'orderby' => 'date', 'order' => 'DESC' )); // link artist name with first work by that artist $term_list .= '<li><a href="' . get_permalink( $posts[0]->ID ) . '" title="' . sprintf(__('View all post filed under %s', 'my_localization_domain'), $term->name) . '">' . $termfirst . ' ' . $term->name . '</a></li><li>' . the_terms() . '</li>'; 

Это изменит ссылку на последнюю запись. Вероятно, вы захотите изменить параметры «orderby» и «order» в коде. Возможные значения доступны здесь http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

В вашем коде вам не нужна строка $first_cat_post = get_posts($args);

Также, пожалуйста, исправьте параметры в $args , см. Эту страницу для справки http://codex.wordpress.org/Function_Reference/get_terms

Я не думаю, что get_pages является подходящим для этого случая, я считаю, что get_posts – это то, что вам нужно. Кроме того, wp_redirect не будет работать, если он просто был отправлен в файл шаблона шаблона IF , который уже отправлен. Его наилучшим образом выполнен из ваших функций. Php, как в приведенном ниже примере.

Мы подключаемся к template _redirect, который является последним действием для запуска перед отображением презентации пользователю (затем появляется get_header и т. Д.).

Затем мы проверяем, что запрос var пытается получить имя термина, которое принадлежит нашей таксономии (в ваших случаях artists ), и если это условие возвращает true мы захватываем первый пост, его постоянную ссылку, а затем перенаправляем пользователя на этот первый пост.

Решение: (для размещения в файле functions.php)

 add_action('template_redirect', 'first_post'); function first_post(){ global $wp_query; global $post; if ( $wp_query->query_vars['artists'] === get_query_var('artists') ) { $args = array( 'post_type' => 'artworks', // change this to the post type you registered 'posts_per_page' => 1, 'tax_query' => array( array( 'taxonomy' => 'artists', 'field' => 'slug', 'terms' => get_query_var( 'artists' ) ) ) ); $first_post = get_posts($args); foreach($first_post as $post) : setup_postdata($post); wp_redirect(get_permalink($post->ID)); exit; endforeach; }//end if-block conditional } 

Преимущество этого метода заключается в том, что вы можете сохранить внешний вид своей ссылки, например;

http://www.example.com/artists/michael-aakhus/
http://www.example.com/artists/jane-abrams/
и т.д…

Вместо того, чтобы ваши ссылки появлялись как,

http://www.example.com/artists/michael-aakhus/%postname%
http://www.example.com/artists/jane-abrams/%postname%
и т.д…

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