如何使用wp_Query仅使用产品ID来显示所有产品数据?

时间:2020-03-24 作者:Jason Is My Name

在产品页面(产品1)上,我试图浏览有关不同相关产品(产品2)的信息。

创建一种“您可能也喜欢”的产品列表。

我正在尝试最简单的WP\\U查询,但无法找出如何从列表中的一个产品(产品2)中提取所有产品数据,以便我可以提前看到可以为我当前浏览的产品(产品1)带来什么。

我需要这样的东西:

<?php
$additional_forms_args = array(
    \'post_type\' => \'product\',
    \'posts_per_page\' => 1,
    \'p\' => $other_form_product_id
);

$additional_form_query = new WP_Query($additional_forms_args);

if ( $additional_form_query->have_posts() ) :

    while ( $additional_form_query->have_posts() ) : $additional_form_query->the_post();

            global $product;

            $attributes = $product->get_attributes();

            var_dump( $attributes );

    endwhile;

    wp_reset_postdata();

endif;
我希望插入product\\u id的产品数据有一个var\\u转储。

我希望看到产品的产品数据数组,其ID为我放入args的内容,而得到的是一个空数组:

数组(0){}

Please can someone help me to gather all product data associated with a product separate to the one I am currently browsing and dump its data for inspection?

EDIT (优化问题):

我还有一段代码,在我的产品上创建了一个变量:

woocommerce_wp_checkbox(
    array(
        \'id\' => \'greener_production\',
        \'wrapper_class\' => \'show_if_simple\',
        \'label\' => __(\'Greener Production\', \'woocommerce\'),
        \'description\' => __(\'Tick if this product is the result of Greener Production\', \'woocommerce\'),
    )
);
在同一个代码段中,我们是否可以查询此代码以查看是否勾选了“是:否”?

谢谢,杰森。

1 个回复
最合适的回答,由SO网友:disinfor 整理而成

今天早上我确实做了同样的事情。这里有一个可以使用的函数。可以将函数添加到函数中。然后在模板上调用函数:

 /**
 * @param array $product_ids product_id the product id for the product you want to retrieve.
 *
 * @return string the HTML output
 */
function wpse361339_relevant_products( $product_ids = [] ) {
    global $post;

    // Bail early if there is not product ids.
    if ( is_empty( $product_ids ) ) :
         return;
    endif;

    // Args here
    $args = [
        \'post_type\'      => \'product\',
        \'posts_per_page\' => 1,
        \'post__in\'       => $product_ids,
        // MORE ARGS HERE IF NECESSARY
    ];

    $related_products = get_posts( $args );

    $product_output = \'\';

    foreach ( $related_products as $related_product ) {

        // Get the product object so we have access to the attributes.
        $product = wc_get_product( $related_product->ID );

        // $product_output .= BUILD YOUR MARKUP HERE
        echo \'<pre>\' . print_r( $product, TRUE ) . \'</pre>\';

    }

    return $product_output;
}
我这样做是为了让您可以将想要的任何产品ID作为数组传递给函数。然后对属性执行所需的操作。

要在模板上使用:wpse361339_relevant_products( [ \'product_id_here\' ] );

EDIT获取WP_Query(), 您只需在while 回路:

$product_data = wc_get_product( get_the_ID() );
var_dump( $product_data );
在上下文中:

<?php
$additional_forms_args = array(
    \'post_type\' => \'product\',
    \'posts_per_page\' => 1,
    \'p\' => $other_form_product_id
);

$additional_form_query = new WP_Query($additional_forms_args);

if ( $additional_form_query->have_posts() ) :

    while ( $additional_form_query->have_posts() ) : $additional_form_query->the_post();

            $product_data = wc_get_product( get_the_ID() );
            var_dump( $product_data );

    endwhile;

    wp_reset_postdata();

endif;
要获取特定的产品数据,可以使用以下方法:https://docs.woocommerce.com/wc-apidocs/class-WC_Product.html

喜欢$product_data->get_title() 将为您获取标题。

EDIT 2复选框数据保存在产品元中,因此您可以获得它:$product_data->get_meta();