Php Mysql-Woocommerce交叉销售和;追加销售单一产品
我试图在单个产品页面中回应交叉销售和追加销售产品。 对于交叉销售,我得到了MYSQL语法错误 PHP:7.0.21 MySQL:5.6.35 我的代码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];
<?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_时,它在现在不显示价格。你知道吗?嗯……它是一个可变产品吗?