我正在使用主题,并且具有自定义帖子类型“卖家”。我在WooCommerce中有产品,通过“高级自定义”字段将产品分配给卖方。在我的single-seller.php中,我有:
<?php echo do_shortcode('[products]'); ?>
根据主题要求完美地退还产品。我有一个查询可以查询并显示自己的代码:
$relatedProducts = get_posts(array(
'meta_query' => array(
array(
'key' => 'seller', //ACF field name
'value' => get_the_ID(),
'compare' => 'LIKE'
),
),
'numposts' => -1,
'post_status' => 'publish',
'post_type' => 'product',
));
我可以将简码传递给ids参数,什么是最好的方法?
<?php echo do_shortcode('[products ids=""]'); ?>
全力以赴。
答案 0 :(得分:1)
您已经可以使用woocommerce [products]
的{{3}}短代码了……
在get_posts()
功能中,您将添加arguments数组:
'fields' => 'ids',
获取一系列产品ID…
然后使用implode()
函数将您的产品ID数组转换为ID字符串,您将可以通过以下方式将ID作为字符串包含在您的短代码中:
<?php // Your query
$related_ids = get_posts(array(
'meta_query' => array(
array(
'key' => 'seller', //ACF field name
'value' => get_the_ID(),
'compare' => 'LIKE'
),
),
'numposts' => -1,
'post_status' => 'publish',
'post_type' => 'product',
'fields' => 'ids', // <==== HERE to get an array of IDs
)); ?>
<?php echo do_shortcode("[products ids='".implode(',',$related_ids)."']"); ?>
经过测试可以正常工作。
答案 1 :(得分:0)
您是自己的简码吗?以下是使用参数创建简码的方法:https://developer.wordpress.org/plugins/shortcodes/shortcodes-with-parameters/
在查询中,您必须添加
'post__in' => array(<put list of id here, separated by comma>)