自定义WordPress搜索查询,忽略pre_get_posts上的posts_per_page

时间:2018-09-24 16:55:40

标签: php wordpress woocommerce algolia

我一直在使用此功能,由于某种原因,我似乎无法在这里找出问题。

我有一个功能,希望影响搜索结果,以将查询的posts_per_page数更改为无限制。

出于任何原因,$query->set('posts_per_page', -1)$query->set('post__in', $post__in)$query->set('tax_query', $tax_query) 起作用起作用时似乎什么也不做。

任何想法将不胜感激!

    function fp_search_query_mod( $query ) {

    if ( $query->is_search && $query->is_main_query() && !is_admin() ) :

        $cats = ( isset($_GET['cats'] ) ? $_GET['cats'] : null );

        $post__in = array();

        if ( !empty( $cats ) ) :

            $cats = explode( ',', $cats );

            $tax_query = array(

                'relation'  => 'AND',

                array(
                    'taxonomy' => 'product_type',
                    'field'    => 'slug',
                    'terms'    => array( 'simple', 'variable' ) 
                ),

                array(
                    'taxonomy' => 'product_cat',
                    'field'    => 'id',
                    'terms'    => $cats,
                )

            );

            $query->set( 'tax_query', $tax_query );

            if ( in_array( 'favs', $cats ) ) :

                $fp_favs = get_user_meta( get_current_user_id(), 'fp_favs', true );

                if ( !empty( $fp_favs ) ) {

                    $post__in = $fp_favs;

                }

            endif;

            if ( in_array( 'purchases', $cats ) ) :

                // $purchased = get_customer_purchased_products();
                $purchased = get_user_meta( get_current_user_id(), 'fp_purchases', true );

                if ( !empty( $post__in ) ) {

                    $post__in = array_merge( $post__in, $purchased );

                    $post__in = array_unique( $post__in );

                } else {

                    $post__in = $purchased;

                }

            endif;

        endif;

        if ( !empty( $post__in ) ) :

            $query->set( 'post__in', $post__in );

        endif;

        $query->set( 'posts_per_page', -1 );

    endif;

}
add_action( 'pre_get_posts', 'fp_search_query_mod', 2 );

以下是显示结果的页面:https://filmpacdev.wpengine.com/?s=beaches&post_type=product

0 个答案:

没有答案