我有一个带有选项的主题。我想为一个特定的woocommerce类别显示3篇帖子,我可以显示类别id,但我不知道如何根据其类别id显示产品,但我有代码片段,它按woocommerce类别名称显示产品。所以我现在需要一个选定的类别名称而不是其id,或者将其从类别id转换为类别名称?
我试着跟随,但根本不起作用。任何帮助都会很感激的,我这两天都在苦苦挣扎。
$slidecat =theme_get_option(\'theme_slide_categories\');
$args = array(
\'post_type\' => \'product\',
\'posts_per_page\' => 3,
\'product_cat\' => \'burger\',
\'orderby\' =>\'date\',
\'order\' => \'ASC\' );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
the_title(); ?>
<?php endwhile;
wp_reset_query(); ?>
当我回显$slidecat时,它显示的cat id为;汉堡;这是16。
选项区域
$options[] = array( \'name\' => __(\'Slider Category\', \'theme\'),
\'desc\' => __(\'Select a category for the featured post slider\', \'theme\'),
\'id\' => \'theme_slide_categories\',
\'type\' => \'select\',
\'class\' => \'hidden\',
\'options\' => $options_categories);
我希望我在这里提供的代码足以获得帮助。谢谢大家
最合适的回答,由SO网友:Sally CJ 整理而成
将其从类别id转换为类别名称
当我回显$slidecat时,它显示的cat id为;汉堡;这是16
您可以使用get_term_field()
按ID获取术语/类别slug:
// Get the slug and then pass it to WP_Query.
$cat_slug = get_term_field( \'slug\', $slidecat, \'product_cat\' );
$args = array(
\'post_type\' => \'product\',
\'posts_per_page\' => 3,
\'product_cat\' => $cat_slug,
\'orderby\' => \'date\',
\'order\' => \'ASC\'
);
或者您可以将类别ID传递给
WP_Query
使用
taxonomy query, 像这样:
$args = array(
\'post_type\' => \'product\',
\'posts_per_page\' => 3,
// \'product_cat\' => \'burger\', // don\'t set product_cat
\'tax_query\' => array(
array(
\'taxonomy\' => \'product_cat\',
\'terms\' => $slidecat,
\'field\' => \'term_id\',
),
),
\'orderby\' => \'date\',
\'order\' => \'ASC\'
);
此外,您应该更换
wp_reset_query()
在代码中使用
wp_reset_postdata()
因为只有在修改了WordPress主查询(例如,如果您调用
query_posts()
这应该避免)。