这是我们到目前为止得出的结论,肯定还有改进的余地。
remove_action( \'genesis_loop\', \'genesis_do_loop\' );
add_action( \'genesis_loop\', \'ahso_custom_taxonomy_archive_loop\' );
function ahso_custom_taxonomy_archive_loop() {
global $wp_query; // globalize it.
// get category ID
$cat_id = $wp_query->get_queried_object_id(); // get current category
// get all child categories
$cat_args = array(
\'type\' => \'products\',
\'child_of\' => $cat_id,
//\'parent\' => \'\',
\'orderby\' => \'term_group\',
\'order\' => \'ASC\',
\'hide_empty\' => 0,
\'hierarchical\' => 1,
\'exclude\' => \'\',
\'include\' => \'\',
\'number\' => \'\',
\'taxonomy\' => \'product-categories\',
\'pad_counts\' => false
);
// get all children of the current category
$categories = get_categories( $cat_args );
// if the cat has kittens, loop thru them in term order
if ( !empty($categories) ) {
foreach ($categories as $category) {
// first output the category archive headline
// gets the term table w/ the meta info added by genesis that contains the archive headline and intro text
$term = get_term_by( \'id\', $category->term_id, $category->taxonomy );
echo \'\';
echo \'\'.$term->meta["headline"].\'\';
echo \'\';
// then build a query to loop thru the posts in that cat
// WP_Query arguments
$args = array (
\'post_type\' => \'products\',
\'order\' => \'ASC\',
\'orderby\' => \'menu_order\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'product-categories\',
\'field\' => \'id\',
\'terms\' => $category->term_id,
\'include_children\' => false, // no kittens
)
)
);
// loop thru posts in category
// output featured image
// The Query
$cat_query = new WP_Query( $args );
// The Loop
if ( $cat_query->have_posts() ) {
while ( $cat_query->have_posts() ) {
$cat_query->the_post();
// do something
echo \'\';
echo \'\';
echo the_post_thumbnail(\'medium\');
echo \'\';
echo \'\'.get_the_title().\'\';
echo \'\';
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
}
} // end category children loop
// if the category has no children, just run a loop thru that category.
// get_categories returns an empty array
if ( empty($categories) ) {
//echo \'this cat has no kittens\';
// WP_Query arguments
$args = array (
\'post_type\' => \'products\',
\'order\' => \'ASC\',
\'orderby\' => \'menu_order\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'product-categories\',
\'field\' => \'id\',
\'terms\' => $cat_id, // get the initial $cat_id, from the query object
\'include_children\' => false, // pls spay and neutr yrs pets
)
)
);
// The Query
$cat_query = new WP_Query( $args );
// The Loop
if ( $cat_query->have_posts() ) {
while ( $cat_query->have_posts() ) {
$cat_query->the_post();
// do something
echo \'\';
echo \'\';
echo the_post_thumbnail(\'medium\');
echo \'\';
echo \'\'.get_the_title().\'\';
echo \'\';
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
} // end no children category loop
}
如果你有任何想法,请告诉我们。欢迎反馈。