Я создал свой собственный тип сообщения, называемый «секторами», используя следующий код:
register_post_type( 'sectors', array( 'labels' => array( 'name' => __( 'Sectors' ), 'singular_name' => __( 'sectors' ), ), 'has_archive' => true, 'hierarchical' => true, 'menu_icon' => 'dashicons-heart', 'public' => true, 'rewrite' => array( 'slug' => 'your-cpt', 'with_front' => false ), 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'revisions', 'page-attributes' ), 'taxonomies' => array( 'your-cpt-type', 'post_tag' ), )); }
Это позволило мне добавить «теги» к страницам настраиваемого типа сообщений.
Теперь я пытаюсь отображать страницы с помощью этих настраиваемых типов сообщений по определенным тегам.
Мне удалось сделать это с помощью сообщений, используя следующий код:
<?php $args = array('tag_slug__and' => array('featuredpost1')); $loop = new WP_Query( $args ); while ($loop->have_posts() ) : $loop->the_post(); ?> <h5 class="captext"><?php the_title(); ?></h5> <hr> <div style="float: left; padding-right:20px;"> <?php the_post_thumbnail( 'thumb' ); ?> </div> <?php the_excerpt(); ?> <a href="<?php echo get_permalink(); ?>"> Read More...</a> <?php endwhile; ?> <?php wp_reset_query(); ?>
Это получит все сообщения, у которых есть тег 'featuredpost1'.
Как это возможно с пользовательскими типами сообщений?
EDIT / UPDATE:
Теперь это работает, есть ли способ использовать эту функциональность на другой странице? Например, на моей домашней странице получайте сообщения через теги, поэтому все, что обновляется на этой странице, будет обновляться на главной странице?
Параметры запроса WordPress
Если вы добавите ::
$args = array( 'post_type' => array( 'sectors' ) //, 'multiple_types_after_commas' ) ); $query = new WP_Query( $args );
или
$query = new WP_Query( 'post_type=sectors' );
Это поможет вам настроить ваш тип сообщения с помощью вашего запроса.
Это будет выглядеть
$args = array( 'tag_slug__and' => array('featuredpost1'), 'post_type' => array( 'sectors' ) ); $loop = new WP_Query( $args ); while ($loop->have_posts() ) : $loop->the_post();
Решение Cayce K будет работать отлично. У меня есть второй способ предложить:
Во-первых: добавьте свой настраиваемый тип сообщения в основной запрос. Вы можете добиться этого, добавив несколько строк к вашим functions.php
.
<?php add_action( 'pre_get_posts', 'add_my_post_types_to_query' ); function add_my_post_types_to_query( $query ) { // Leave the query as it is in admin area if( is_admin() ) { return $query; } // add 'sectors' to main_query when it's a tag- or post-archive if ( is_tag() && $query->is_main_query() || is_archive() && $query->is_main_query() ) $query->set( 'post_type', array( 'post', 'page', 'sectors', 'add_more_here' ) ); return $query; } ?>
Во-вторых: после этого вы можете использовать archive.php
, tag.php
или tag-myTagName.php
в своей теме, чтобы показать страницу архива для этого тега, включая tag-myTagName.php
типа сообщений». Вам не нужно будет настраивать специальный запрос, просто добавьте ссылку на нужный тег в одно из ваших меню – ваш стандартный цикл сделает все остальное.
Подсказка:
Когда вы просто хотите создать страницу архива для ваших полных пользовательских типов сообщений, вы также можете использовать WP-плагин Post Type Archive Link .
Если вы ищете персонализированный тип сообщения с именем тега, вам нужно указать, что в аргументах запроса:
<?php $query = new WP_Query( array( "post-type" => "sectors", "tag" => "featuredpost1" ) ); while ($query->have_posts()) : $query->the_post(); the_title(); endwhile; ?>
Пусть это поможет вам …