Php Mysql-Woocommerce交叉销售和;追加销售单一产品

Php Mysql-Woocommerce交叉销售和;追加销售单一产品,php,mysql,wordpress,woocommerce,product,Php,Mysql,Wordpress,Woocommerce,Product,我试图在单个产品页面中回应交叉销售和追加销售产品。 对于交叉销售,我得到了MYSQL语法错误 PHP:7.0.21 MySQL:5.6.35 我的代码 <?php /* crossells */ $crosssell_ids = get_post_meta( get_the_ID(), '_crosssell_ids' ); $crosssell_ids=$crosssell_ids[0];

我试图在单个产品页面中回应交叉销售和追加销售产品。 对于交叉销售,我得到了MYSQL语法错误

PHP:7.0.21 MySQL:5.6.35

我的代码

<?php
                    /* crossells */
            $crosssell_ids = get_post_meta( get_the_ID(), '_crosssell_ids' ); 

            $crosssell_ids=$crosssell_ids[0];

            ?>

    <?php

        $args = array( 'post_type' => 'product', 'posts_per_page' => 8, 'post__in' => '$crosssell_ids', 'orderby' => 'rand' );
        $loop = new WP_Query( $args );
        while ( $loop->have_posts() ) : $loop->the_post(); ?>

                <li class="product">    

                    <a href="<?php echo get_permalink( $loop->post->ID ) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>">

                        <?php woocommerce_show_product_sale_flash( $post, $product ); ?>

                        <?php if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'shop_catalog'); else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="300px" height="300px" />'; ?>

                        <h3><?php the_title(); ?></h3>

                        <span class="price"><?php echo $product->get_price_html(); ?></span>                    

                    </a>

                    <?php woocommerce_template_loop_add_to_cart( $loop->post, $product ); ?>

                </li>

    <?php endwhile;  ?>

看起来问题在于您获取交叉销售id的方式,我相信您拥有的是旧版本的WC,您可以按如下方式更改代码:

替换:

$crosssell_ids = get_post_meta( get_the_ID(), '_crosssell_ids' ); 
$crosssell_ids = $crosssell_ids[0];
global $product;
$crosssell_ids = $product->get_cross_sell_ids();
与:

$crosssell_ids = get_post_meta( get_the_ID(), '_crosssell_ids' ); 
$crosssell_ids = $crosssell_ids[0];
global $product;
$crosssell_ids = $product->get_cross_sell_ids();

更新:

$crosssell_ids = get_post_meta( get_the_ID(), '_crosssell_ids' ); 
$crosssell_ids = $crosssell_ids[0];
global $product;
$crosssell_ids = $product->get_cross_sell_ids();
$args
数组中,
$crosssell\u id
周围不需要引号,请尝试删除它们:

'post__in' => '$crosssell_ids'
应该是

'post__in' => $crosssell_ids

IN
子句中没有要检查的值:
IN()
。这就是错误的来源。您编写了此SQL还是由WordPress生成的?我只是简单地使用了上面的代码,WordPress生成的此SQL听起来像是
$crosssell\u ids
为空或没有值,请尝试
var\u dump($crosssell\u ids)
并确认。替换后仍然:WordPress databasefout:[您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解使用near')和wp_posts.post_type='product'和(wp_posts.post_status='publish'或wp'的正确语法,第1行]是的,我在后端添加了销售和交叉销售产品。我这样做了,但现在它显示了woocommerce中的所有产品,而不是仅在前端显示交叉销售产品:如果在我使用product_cat而不是post_时,它在现在不显示价格。你知道吗?嗯……它是一个可变产品吗?