Питання Збір спеціальних типів повідомлень за допомогою тегів


Я створив тип спеціального повідомлення під назвою "сектори", використовуючи код нижче:

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:

Це працює зараз, чи є спосіб використовувати цю функцію на іншій сторінці? Наприклад, на моїй домашній сторінці отримуйте повідомлення за допомогою тегів, так що все, що оновлюється на цій сторінці, оновлюється на домашній сторінці ??


16
2018-04-27 16:42


походження


У когось є ідеї?
Ви додали "post-type" => "sectors" до твоїх арг? - Cayce K
На якій сторінці / шаблоні ви це робите. Вам дійсно потрібен спеціальний запит - Pieter Goosen


Відповіді:


Параметри запиту 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();

12
2018-04-29 16:55



Дякую, це чудово працювало! Також дякую Zork за вашу відповідь, та Selva.


Рішення 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, the tag.php або a tag-myTagName.php у вашій темі, щоб відобразити сторінку архіву для цього тегу, включаючи тип користувацького повідомлення "сектори'. Вам не доведеться налаштувати спеціальний запит, просто додати посилання на потрібний тег до одного з ваших меню - ваш стандартний цикл зробить все інше.

Підказка:

Коли ви просто хочете створити сторінку архіву для повного формату спеціального повідомлення "сектори'ви також можете використовувати плагін WP Тип публікації архіву посилання.


2
2018-04-29 20:19



гарний з коробки мислення. це є деяке веселе знання мати. дякую, що написали цю відповідь! - Cayce K


Якщо ви шукаєте тип спеціального повідомлення за допомогою імені тегу, вам слід вказати, що в аргументах запиту:

  <?php $query = new WP_Query( array( "post-type" => "sectors", "tag" => "featuredpost1" ) );

   while ($query->have_posts()) : $query->the_post();

   the_title();

  endwhile; ?>

Може це допоможе вам ...


1
2018-04-30 06:26