Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 相关产品Woocommerce 3.0+;作者_Php_Wordpress_Woocommerce - Fatal编程技术网

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()是如何工作的,并对其进行修改。可能有一个过滤器可以用来调整查询。我确实看到了,但没有看到,或者可能错过了。我应该过滤整个循环吗?我已经添加了一个关于如何使用过滤器实现这一点的答案。谢谢,我会试试的