Php Woocommerce在归档页面中显示产品

Php Woocommerce在归档页面中显示产品,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在尝试将所有产品显示在我商店的存档页中。我想要他们的身份证。我用的是我的钩子,挂在wp_头上检查 if(is_product_category()) 我想以某种方式访问产品的查询并获取它们的ID if(is_product_category()) { $current_category = get_queried_object(); $category_id = $current_category->term_id; $category_name = $cur

我正在尝试将所有产品显示在我商店的存档页中。我想要他们的身份证。我用的是我的钩子,挂在wp_头上检查

if(is_product_category())
我想以某种方式访问产品的查询并获取它们的ID

if(is_product_category()) {
    $current_category = get_queried_object();
    $category_id = $current_category->term_id;
    $category_name = $current_category->name;

这是我到目前为止获取当前类别id的代码。经过一些研究,我找到了答案,它相当简单,这里是为每个人解决同一问题而编写的

    woocommerce_product_loop_start(false);
    while ( have_posts() ) {
        the_post();
        $id = get_the_ID();
    }
    woocommerce_product_loop_end(false);
有了这个,woocommerce循环将再次为当前页面调用,因此我们可以获取我们想要的信息。
PS:查询完成后是否需要重置查询?

您可以按照此处获取woocommerce产品ID


只需在plugin文件夹中创建一个文件夹并将代码粘贴到那里,或者您也可以将代码粘贴到theme function.php文件中。希望这能对你有所帮助。

如果你在存档页面,主查询应该包含帖子。最简单的方法是从$wp_全局查询的“posts”属性中获取ID。有一个名为wp_list_pulk的实用函数,它从一个数组中获取每个索引,因此最终得到的是一个ID数组

global $wp_query;
$ids = wp_list_pluck( $wp_query->posts, "ID" );

请注意,虽然wp_list_pulk确实使用循环遍历数组,但它比使用have_posts()的WordPress循环样式、the_post()要好。这是因为它不会在$wp\u查询和$post globals之间移动所有数据,也不需要重新设置查询。

在自定义查询之后,您应该调用
wp\u reset\u postdata()
。但在本例中,您使用的是原始循环,因此您希望使用
wp\u reset\u query()
。如果您不运行这些,那么以后发生的任何循环都将从循环的最后一个帖子开始,因为它已经完成了所有这些帖子。我发布了一个替代答案,不涉及你的循环。