Php 相关产品Woocommerce 3.0+;作者
我试图显示与文章作者相关的相关产品,因为我只想显示产品或由同一用户创建的产品Php 相关产品Woocommerce 3.0+;作者,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我试图显示与文章作者相关的相关产品,因为我只想显示产品或由同一用户创建的产品 global $post; $authorid = $post->post_author; foreach ( $related_products as $related_product ) : $post_object = get_post( $related_product->$authorid ); setup_postdata( $GLOBALS[
global $post;
$authorid = $post->post_author;
foreach ( $related_products as $related_product ) :
$post_object = get_post( $related_product->$authorid );
setup_postdata( $GLOBALS['post'] =& $post_object );
wc_get_template_part( 'content', 'product' );
endforeach;
但是它没有显示任何内容您可以这样做,从相关产品阵列中删除任何不是由产品作者创建的产品。将此代码放在functions.php文件中
add_filter('woocommerce_related_products', 'show_related_products_post_author', 10, 3 );
function show_related_products_post_author( $related_posts, $product_id, $filters ) {
$author_id = get_post_field( 'post_author', $product_id );
$query = new WC_Product_Query( array(
'limit' => -1,
'return' => 'ids',
) );
$products = $query->get_products();
foreach( $products as $loop_product_id ) {
$product_author_id = get_post_field( 'post_author', $loop_product_id );
if( $product_author_id !== $author_id ) {
$key = array_search($loop_product_id, $related_posts);
unset($related_posts[$key]);
}
}
return $related_posts;
}
您需要了解函数wc_get_related_products()是如何工作的,并对其进行修改。可能有一个过滤器可以用来调整查询。我确实看到了,但没有看到,或者可能错过了。我应该过滤整个循环吗?我已经添加了一个关于如何使用过滤器实现这一点的答案。谢谢,我会试试的