Уточнить пользовательские сообщения от автора

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

query_posts( array( 'post_type' => 'custom_post_name', 'author'=>$curauth->ID ) ); while (have_posts()) : the_post(); 

По сути, я хочу, чтобы на каждом авторе было несколько страниц шаблонов авторов.

Solutions Collecting From Web of "Уточнить пользовательские сообщения от автора"

Для его выполнения необходимо выполнить три шага.

1. Добавить правила перезаписи

 add_action('generate_rewrite_rules', 'author_cpt_add_rewrite_rules'); function author_cpt_add_rewrite_rules( $wp_rewrite ) { $new_rules = array( 'author/(.+)/(.+)' => 'index.php?author='.$wp_rewrite->preg_index(1) . '&post_type=' .$wp_rewrite->preg_index(2) ); //​ Add the new rewrite rule into the top of the global rules array $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; } 

2. Перенаправление на конкретные шаблоны

 function author_cpt_template_redirect() { global $wp_query; // check for the target request if (!empty($wp_query->query_vars['author']) && !empty($wp_query->query_vars['post_type'])) { // turn off 404 error $wp_query->is_404 = false; // include if template is available if(file_exists('author-'.$wp_query->query_vars['post_type'].'.php')) include('author-'.$wp_query->query_vars['post_type'].'.php'); else if(file_exists('author.php')) include('author.php'); else include('index.php'); return; } } в function author_cpt_template_redirect() { global $wp_query; // check for the target request if (!empty($wp_query->query_vars['author']) && !empty($wp_query->query_vars['post_type'])) { // turn off 404 error $wp_query->is_404 = false; // include if template is available if(file_exists('author-'.$wp_query->query_vars['post_type'].'.php')) include('author-'.$wp_query->query_vars['post_type'].'.php'); else if(file_exists('author.php')) include('author.php'); else include('index.php'); return; } } в function author_cpt_template_redirect() { global $wp_query; // check for the target request if (!empty($wp_query->query_vars['author']) && !empty($wp_query->query_vars['post_type'])) { // turn off 404 error $wp_query->is_404 = false; // include if template is available if(file_exists('author-'.$wp_query->query_vars['post_type'].'.php')) include('author-'.$wp_query->query_vars['post_type'].'.php'); else if(file_exists('author.php')) include('author.php'); else include('index.php'); return; } } в function author_cpt_template_redirect() { global $wp_query; // check for the target request if (!empty($wp_query->query_vars['author']) && !empty($wp_query->query_vars['post_type'])) { // turn off 404 error $wp_query->is_404 = false; // include if template is available if(file_exists('author-'.$wp_query->query_vars['post_type'].'.php')) include('author-'.$wp_query->query_vars['post_type'].'.php'); else if(file_exists('author.php')) include('author.php'); else include('index.php'); return; } } 

3. Записи для заполнения страницы или шаблона

 add_action('template_redirect', 'author_cpt_template_redirect', 1); function query_author_cpts( $query ) { // check for the target request if (!empty($query->query_vars['author']) && !empty($query->query_vars['post_type'])) { // query posts accordingly query_posts( array( 'post_type' => $query->query_vars['post_type'], 'author_name' => $query->query_vars['author'], 'paged' => get_query_var( 'paged' ) ) ); } } add_action( 'wp', 'query_author_cpts' );