php – 输出与标签相关的帖子

前端之家收集整理的这篇文章主要介绍了php – 输出与标签相关的帖子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用wordpress 3.9和WooCommerce 2.1.8,并想知道如何显示用户当前正在查看的四行相关帖子的单行,这与帖子的标签标签相关,而不是类别在…

理想情况下,我想显示与我的单个产品页面底部当前正在查看的项目标签相关的四种产品,具体来说,每个相关帖子的特色图片缩略图以及价格.如果可能,还可以从functions.PHP文件编写一个解决方案.

下面的代码是我到目前为止,它显示的是相关的帖子类别,而不是它所基于的标签

add_action( 'woocommerce_after_single_product_summary','woocommerce_output_related_products',20);

    function woocommerce_output_related_products() {
        $output = null;

        ob_start();

        woocommerce_related_products(array(
            'columns' => 4,'posts_per_page' => 4,'post_type' => 'product','fields' => 'ids','Meta_query' => $Meta_query,'tax_query' => array(
               'relation' =>  'AND',array(
                    'taxonomy' => 'product_cat','field' => 'id','terms' => $cats_array
                ),array(
                    'taxonomy' => 'product_tag','terms' => $tags_array
                )
            )
        )); 

        $content = ob_get_clean();
        if($content) { $output .= $content; }

        echo '<div class="clear"></div>' . $output;

    }

任何帮助将不胜感激,
谢谢.

/templates/single-product/related.PHP模板文件中还有另一个过滤器woocommerce_related_products_args,它会覆盖您的查询数组.

一种可能的解决方案是覆盖related.PHP模板,创建新模板并在那里执行自定义WP_Query,然后使用wc_get_template()函数包含该模板.

另一种是利用内置过滤器(其中很多都存在).我将尝试按照执行顺序解释这里的过滤器,它们的目的是什么,以及如何使用它们.

woocommerce_output_related_products_args

第一个用于设置woocommerce_related_products()函数参数的过滤器.函数load related.PHP模板和传递的参数是模板的全局选项.参数是“posts_per_page”,“columns”和“orderby”.

/* An example of how to set the four products per page */
add_filter( 'woocommerce_output_related_products_args',function( $args ) 
{ 
    $args = wp_parse_args( array( 'posts_per_page' => 4 ),$args );
    return $args;
});

在模板的开头,WooCommerce $product对象按类别和标记搜索相关产品.结果是一个post id数组,后来用于主查询中的post__in子句.有几个过滤器可用.

woocommerce_product_related_posts_relate_by_category

它用于按类别排除相关产品.

add_filter( 'woocommerce_product_related_posts_relate_by_category',function() {
    return false;
});

woocommerce_product_related_posts_relate_by_tag

标签排除相关产品.

add_filter( 'woocommerce_product_related_posts_relate_by_tag',function() {
    return false;
});

woocommerce_product_related_posts_query

要对查询部分进行最终修改.

add_filter( 'woocommerce_product_related_posts_query',function( $query ) {
    // modify $query array
    return $query;
});

提供修改查询参数的可能性的最后一个过滤器是woocommerce_related_products_args.

woocommerce_related_products_args

从现在起查询基于post__in子句,删除该部分并添加自定义查询部分.

add_filter( 'woocommerce_related_products_args',function( $args ) 
{
    unset( $args['post__in'] );
    $args['tax_query'] = array( /* taxonomy parameters */ );
    return $args;
});

如何显示标签相关的四个相关产品的示例.

add_filter( 'woocommerce_output_related_products_args',$args );
    return $args;
});

add_filter( 'woocommerce_product_related_posts_relate_by_category',function() {
    return false;
});

一些可能有用的提示

在每个过滤器挂钩中,如果您不确定传入的默认参数是什么,只需在它们上使用print_r来查看浏览器中的值.另外,查看WooCommerce源文件将澄清一些事情.最后,很多时候没有必要完全覆盖默认的WooCommerce功能,因为插件的创建者真的努力使用所有这些过滤器来简化操作.

原文链接:https://www.f2er.com/php/133508.html

猜你在找的PHP相关文章