#php #wordpress #function
Вопрос:
В настоящее время я создаю шорткод для списка сообщений в WordPress. И вот мой код
function mgc_post_default() {
global $post;
extract(shortcode_atts(array(
'cat' => '',
'num' => '5',
'order' => 'DESC',
'orderby' => 'post_date',
), $atts));
$args = array(
'cat' => $cat,
'posts_per_page' => $num,
'order' => $order,
'orderby' => $orderby,
);
$output = '';
$posts = get_posts($args);
foreach($posts as $post) {
setup_postdata($post);
$output .= '<div class="movie-poster">' . get_the_post_thumbnail() . '</div>';
$output .= '<div><h2><a href="'. get_the_permalink() .'">'. get_the_title() .'</a></h2></div>';
$output .= '<div>' . get_the_date() . '</div>';
$output .= '<div>' . get_the_content() . '</div>';
$output .= '<div>' . get_field( "status" ) . '</div>';
$output .= '<div>' . get_the_category( $id )[0]->name . '</div>';
$output .= '<div>' . get_the_tags( $id ) [1]->name . '</div>';
}
wp_reset_postdata();
return '<div>'. $output .'</div>';
}
// Register shortcode
add_shortcode('mgc_post', 'mgc_post_default');
Это работает, но категория и тег каждого поста только что появились 1. Я хочу, чтобы он мог отображать информацию обо всех категориях и тегах каждого поста.
Итак, мой вопрос в том, как показать все эти категории и теги для каждого поста?
Спасибо,
Ответ №1:
Чтобы получить все категории для публикации, используйте wp_get_post_categories вместо get_the_category. Затем вы просто перебираете категории внутри вашего каждого.
То же самое касается условий. Но затем используйте wp_get_post_terms.
Так что что-то вроде этого:
$posts = get_posts($args);
foreach($posts as $post) {
setup_postdata($post);
$categories = wp_get_post_categories( $post );
$foreach( $categories as $category ) {
$output .= '<div>' . $category->name . '</div>';
}
}
wp_reset_postdata();
Ответ №2:
Спасибо @anotheraccount за ответ, но я решил свою собственную проблему, добавив этот код « get_the_tag_list()
и « get_the_category_list()
в $output