Список всех сообщений в настраиваемом типе сообщений по таксономии не работает - PullRequest
0 голосов
/ 28 мая 2020

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

print_r(Array(
    "1"=>"first",
    "2"=>"second"
    ));
// just try to remove args that you don't need 
//actually you need only one
$args = array(
    'tax_query' => array(
            'taxonomy' => 'your-custom-taxonomy',
            'field' => 'slug',
            'terms' => array( 'your-term' )
    ),
    'post_type' => 'your-post-type'
);
$loop = new WP_Query($args);
     if($loop->have_posts()) {
    $term = $wp_query->queried_object;
     while($loop->have_posts()) : $loop->the_post();
        //Output what you want      
   echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
      endwhile;
}

1 Ответ

0 голосов
/ 29 мая 2020
  1. Итак, у вас есть настраиваемый тип сообщения под названием your-post-type
  2. , и у вас есть настраиваемая таксономия под названием your-custom-taxonomy, и вы
  3. хотите получить все сообщения с таксономией набор терминов your-term.

Вы делаете это правильно, задавая свои аргументы.

Примечание : если вы хотите получить все сообщения произвольного типа, вам не нужна вся 'tax_query' часть кода.

Я добавил несколько комментариев, чтобы описать, что делает код:

$args = array( // define your arguments for query
    'post_type' => 'your-post-type', // standard post type is 'post', you use a custom one
    'tax_query' => array( // you check for taxonomy field values
        array(
            'taxonomy' => 'your-custom-taxonomy', // standard is 'category' you use a custom one
            'field'    => 'slug', // you want to get the terms by its slug (could also use id)
            'terms'    => 'your-term', // this is the taxonomy term slug the post has set
        ),
    ),
);
$loop = new WP_Query( $args ); // get post objects

// The Loop
if ( $loop ->have_posts() ) { // check if you received post objects
    echo "<ul>"; // open unordered list
    while ( $loop ->have_posts() ) { // loop through post objects
        $loop ->the_post();
            echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>'; // list items
    }
    echo "</ul>"; // close unordered list
    /* Restore original Post Data */
    wp_reset_postdata(); // reset to avoid conflicts
} else {
    // no posts found
}

Надеюсь, это поможет!


РЕДАКТИРОВАТЬ: Если вы не знаете, как использовать WP_Query

Этот код упорядочит ваши сообщения Wordpress по их заголовкам и вывод названия и содержания. Поместите это в файл шаблона вашей темы (узнайте что-нибудь о файлах шаблонов: https://developer.wordpress.org/themes/basics/template-hierarchy/).

<?php 

$args = array(
 'post_type' => 'post',
 'posts_per_page' => -1, // limit the number of posts if you like to
 'orderby' => 'title',
 'order' => 'ASC'
);

$custom_query = new WP_Query($args); 

if ($custom_query->have_posts()) : while($custom_query->have_posts()) : $custom_query->the_post(); ?> 
  <h1><?php the_title(); ?></h1> 
  <?php the_content();?>
<?php endwhile; else : ?> 
  <p>No posts</p>
<?php endif; wp_reset_postdata(); ?>

Вы сказали, что хотите использовать настраиваемый тип сообщения и выполнить таксономию запрос. Таким образом, вы можете настроить это, изменив аргументы в $args.

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