Я столкнулся с той же проблемой, пытаясь выяснить, как это сделать, и я последовал совету соджу и нашел решение.Возможно, есть лучшее решение, но я так и поступил.Я и мой друг ведем блог с обзорами аниме, и я и он будем писать рецензии на одно и то же аниме.
Сначала я создал два типа постов:
- anime: mainстраница по конкретному аниме, например описание, картинки и т. д.
- рецензии: авторский обзор по аниме.опции, которые я включил здесь, это редактор, заголовок и автор.Наряду с связанной таксономии аниме.Вот и все, что нужно здесь
Затем я создал таксономию для названий аниме, чтобы, когда пользователю нужно написать рецензию на аниме, которая еще не добавлена в качестве рецензии, он может добавить заголовок втаксономия.
Я связал таксономию и с post_types, и с wala!Это почти все, что вам нужно.
Так что теперь, когда вы хотите написать новый отзыв для нового аниме, вы сначала добавляете тип поста аниме и записываете, что такое аниме, включаете картинки и т. Д. Добавьте заголовокв таксономии и проверить его.После этого вы создаете новое сообщение с типами отзывов и пишете свой отзыв, не забудьте проверить правильное название в своей таксономии, чтобы узнать, к какому аниме это относится, и вы готовы к работе!
Задача 1: Как мне включить это в мой цикл?
Ну, вы не хотите включать оба типа постов в свой цикл, вы просто хотите включить посты и другое аниме типов постов в свой цикл, поэтому вы делаете следующеев вашем файле functions.php:
function include_custom_post_types( $query ) {
global $wp_query;
// Get all custom post types
$custom_post_type = get_query_var( 'post_type' );
// Get all post types
$post_types = get_post_types();
// If what you are getting is a category or a tag or that there are no custom
// post types you just want to set the post types to be the current post types
if ( (is_category() || is_tag()) && empty( $custom_post_type ))
$query->set( 'post_type' , $post_types );
// Set the custom post types you want to ignore
$ignore_types = array('reviews');
//Unset the post types that are gonna be ignored
foreach($post_types as $key=>$type)
{
if(in_array($type,$ignore_types))
{
unset($post_types[$key]);
}
}
// Set the post types for the query
if ( (is_home() && false == $query->query_vars['suppress_filters']) || is_feed())
$query->set( 'post_type', $post_types);
return $query;
}
add_filter( 'pre_get_posts' , 'include_custom_post_types' );
Проблема 2. Как отобразить обзоры?
Я решил эту проблему, создав еще один файл single.php и переименовав его в single-post_type_name.PHP.Так что в этом случае я создал файл single-anime.php для моего поста типа аниме.Затем вместо содержимого я хочу получить все отзывы для этого конкретного аниме, поэтому я добавил следующее в файл в основной области содержимого:
<?php
//You grab the taxonomy that you have selected for this post
$terms = wp_get_post_terms(get_the_ID(), 'animes_reviewed');
// This is the args array for the criteria that the posts need to be in
$args = array(
// This is the post type of where your reviews are at
post_type' => 'reviews',
// this is for searching the taxonomy usually it's
// taxonomy_name => checked_taxonomy
'anime' => $terms[0]->name,
'post_status' => 'publish'
);
// Grab the posts
$posts = get_posts($args);
//Here I echo out the information for debugging purpose, but
//Here is where you can do HTML to display your reviews
foreach($posts as $post)
{
echo($post->post_content);
the_author_meta( 'nickname', $post->post_author);
}
?>
С этим добавлением вы можете сделать намного больше.таксономии и т. д. Я фактически реализовал обзор эпизодов, просто добавив таксономию и добавив критерии для поиска в разделе сообщений.Надеюсь, это поможет вам, хотя может быть немного поздно :( Спасибо, соджу за рекомендацию пользовательских типов сообщений!