Я работаю над созданием функции шорткода, которая будет отображать пользовательский тип сообщения и фильтровать его по категории / таксономии. Я понял, как создать шорткод и отобразить тип сообщения. Но я не могу заставить его отображать связанные категории таксономии.
Я создал настраиваемый тип сообщения под названием «отзывы». Затем я создал таксономию под названием «категория отзывов». Внутри этой таксономии у меня есть категория под названием «дом для отзывов».
Я хочу иметь возможность использовать шорткод с «testimonial-home» в качестве фильтра для отображения отзывов на домашней странице.
Мой шорткод отлично работает без атрибутов: [list-testimonials] - отображает все отзывы. Но когда я добавляю: [list-testimonials category = "testimonial-home"], ничего не отображается.
Я в тупике. Я так близко, и я уверен, что есть кое-что очень очевидное, что я не замечаю. Любая помощь очень ценится! Спасибо!
Вот моя функция шорткода:
// создаем шорткод с параметрами, чтобы пользователь мог определить, что запрашивается - по умолчанию перечисляются все сообщения в блоге
add_shortcode( 'list-testimonials', 'post_listing_parameters_shortcode' );
function post_listing_parameters_shortcode( $atts ) {
ob_start();
// define attributes and their defaults
extract( shortcode_atts( array (
'type' => 'testimonials',
'order' => 'date',
'orderby' => 'title',
'posts' => -1,
'category' => '',
), $atts ) );
// define query parameters based on attributes
$options = array(
'post_type' => $type,
'order' => $order,
'orderby' => $orderby,
'posts_per_page' => $posts,
'category_name' => $category,
);
$query = new WP_Query( $options );
if ( $query->have_posts() ) { ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<div
class="small-12 medium-12 large-4 columns testimonial-column homepage- testimonial-column">
<!--HOME PAGE SINGLE TESTIMONIAL CONTAINER-->
<div
class="testimonial-container homepage-testimonial-container"
id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<!--HOME PAGE SINGLE TESTIMONIAL TEXT-->
<?php if( get_field('testimonial_text') ): ?>
<div
class="testimonial testimonial-textarea">
<?php the_field('testimonial_text'); ?>
</div>
<?php endif ?>
<!--END HOME PAGE SINGLE TESTIMONIAL TEXT-->
<!--HOME PAGE SINGLE TESTIMONIAL DETAILS-->
<div
class="testimonial-details">
<!--HOME PAGE SINGLE TESTIMONIAL IMAGE-->
<?php if( get_field('testimonial_photo') ): ?>
<img
src="<?php the_field('testimonial_photo'); ?>"
class="testimonial-photo" />
<?php endif ?>
<!--HOME PAGE SINGLE TESTIMONIAL BIO INFO-->
<div
class="testimonial-bio">
<!--HOME PAGE SINGLE TESTIMONIAL NAME-->
<?php if( get_field('testimonial_name') ): ?>
<h5
class="testimonial-name">
<?php the_field('testimonial_name'); ?>
</h5>
<?php endif ?>
<!--END HOME PAGE SINGLE TESTIMONIAL NAME-->
<!--HOME PAGE SINGLE TESTIMONIAL TITLE-->
<?php if( get_field('testimonial_title') ): ?>
<p
class="testimonial-title">
<?php the_field('testimonial_title'); ?>
</p>
<?php endif ?>
<!--END HOME PAGE SINGLE TESTIMONIAL TITLE-->
<!--HOME PAGE SINGLE TESTIMONIAL COMPANY-->
<?php if( get_field('testimonial_company') ): ?>
<p
class="testimonial-company">
<?php the_field('testimonial_company'); ?>
</p>
<?php endif ?>
<!--END HOME PAGE SINGLE TESTIMONIAL COMPANY-->
</div>
<!--END HOME PAGE SINGLE TESTIMONIAL BIO INFO-->
</div>
<!--END HOME PAGE SINGLE TESTIMONIAL DETAILS-->
</div>
<!--END HOME PAGE SINGLE TESTIMONIAL CONTAINER-->
</div>
<!--HOME PAGE TESTIMONIALS COLUMN-->
<?php endwhile;
wp_reset_postdata(); ?>
<?php $myvariable = ob_get_clean();
return $myvariable;
}
}
extract()
. Это действительно проблематично и чрезвычайно сложно отлаживать, поскольку он создает переменные слева направо и по центру на лету. По этим причинам он был удален из ядра и кодекса. Пожалуйста, никогда не используйтеextract()
. Просто чтобы добавить, вы уверены, что используете встроенные категории или настраиваемую таксономию? - person Pieter Goosen   schedule 31.07.2015