首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Learnpress按自定义字段值(价格)显示课程

Learnpress按自定义字段值(价格)显示课程
EN

Stack Overflow用户
提问于 2020-06-16 21:33:07
回答 2查看 1.2K关注 0票数 1

我希望课程页面能够按价格查询课程...找到了这一点,并希望它能完成这项工作...

content-archive-course.php

代码语言:javascript
复制
$default_order = apply_filters( 'thim_default_order_course_option', array(
    'newly-published' => esc_html__( 'Newly published', 'eduma' ),
    'alphabetical'    => esc_html__( 'Alphabetical', 'eduma' ),
    'most-members'    => esc_html__( 'Most members', 'eduma' ),
    //'price'             => esc_html__( 'Price', 'eduma' )
) );;

也是位在: learnpress_v3_functions.php

代码语言:javascript
复制
if ( !function_exists( 'thim_course_order_query' ) ) {
    function thim_course_order_query( $query ) {
        if ( !$query->is_main_query() ) {
            return;
        }

        if ( !is_post_type_archive( 'lp_course' ) && !is_tax( 'course_category' ) ) {
            return;
        }

        // Sort
        if ( isset( $_POST['course_orderby'] ) ) {
            switch ( $_POST['course_orderby'] ) {
                case 'alphabetical':
                    $query->set( 'orderby', 'title' );
                    $query->set( 'order', 'ASC' );

                    break;
                case 'most-members':
                    $query->set( 'orderby', 'meta_value_num' );
                    $query->set( 'meta_key', 'thim_real_student_enrolled' );
                    $query->set( 'order', 'DESC' );

                    break;
                case 'price':
                    $query->set( 'orderby', 'price' );
                    $query->set( 'order', 'ASC' );
                default:
                    $query->set( 'orderby', 'date' );
                    $query->set( 'order', 'DESC' );
            }
        }

感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-02 23:11:50

//content-archive-course

代码语言:javascript
复制
$default_order = apply_filters( 'thim_default_order_course_option', array(
    'alphabetical'    => esc_html__( 'Alphabetical', 'eduma' ),
    'newly-published' => esc_html__( 'Newly published', 'eduma' ),
    'priceasc'        => esc_html__( 'Most Asc', 'eduma' ),
    'pricedesc'   => esc_html__( 'Most Desc', 'eduma' ),
) );;

//learnpress-v3-函数

代码语言:javascript
复制
                case 'priceasc':
                    $query->set( 'orderby', 'price' );
                    $query->set( 'order', 'ASC' );

                    break;
                case 'pricedesc':
                    $query->set( 'orderby', 'price' );
                    $query->set( 'order', 'DESC' );

                    break;
票数 -1
EN

Stack Overflow用户

发布于 2020-08-20 18:46:52

在文件中: content-archive-course.php

代码语言:javascript
复制
$default_order = apply_filters( 'thim_default_order_course_option', array(
'newly-published' => esc_html__( 'Newly published', 'eduma' ),
'alphabetical'    => esc_html__( 'Alphabetical', 'eduma' ),
'most-members'    => esc_html__( 'Most members', 'eduma' ),
'priceasc'        => esc_html__( 'Prices: low to High', 'eduma' ),
'pricedesc'       => esc_html__( 'Prices: high to low', 'eduma' ),

));

在functions.php文件中添加这个钩子:

代码语言:javascript
复制
/*Add new filter options to course archive page */
add_action( 'pre_get_posts', 'thim_course_order_query', 15);

function thim_course_order_query( $query ) {
        if ( !$query->is_main_query() ) {
            return;
        }

        if ( !is_post_type_archive( 'lp_course' ) && !is_tax( 'course_category' ) ) {
            return;
        }

        // Sort
        if ( isset( $_POST['course_orderby'] ) ) {

            switch ( $_POST['course_orderby'] ) {
                case 'alphabetical':
                    $query->set( 'orderby', 'title' );
                    $query->set( 'order', 'ASC' );

                    break;
                case 'most-members':
                    $query->set( 'orderby', 'meta_value_num' );
                    $query->set( 'meta_key', 'thim_real_student_enrolled' );
                    $query->set( 'order', 'DESC' );

                    break;
                case 'priceasc':
                    $query->set( 'orderby', 'meta_value_num' );
                    $query->set( 'meta_key', '_lp_price' );
                    $query->set( 'order', 'ASC' );

                    break;
                case 'pricedesc':
                    $query->set( 'orderby', 'meta_value_num' );
                    $query->set( 'meta_key', '_lp_price' );
                    $query->set( 'order', 'DESC' );

                    break;
                default:
                    $query->set( 'orderby', 'date' );
                    $query->set( 'order', 'DESC' );
            }
        }

        // Pagination
        if ( isset( $_POST['course_paged'] ) ) {
            $query->set( 'paged', $_POST['course_paged'] );
        }

        // Filter by categories
        if ( isset( $_POST['course_cate_filter'] ) && is_array( $_POST['course_cate_filter'] ) ) {
            $query->set( 'tax_query', array(
                array(
                    'taxonomy' => 'course_category',
                    'field'    => 'term_id',
                    'terms'    => $_POST['course_cate_filter'],
                )
            ) );
            //$query->set( 'posts_per_page', - 1 );
        }

        // Filter by instructor
        if ( isset( $_POST['course_instructor_filter'] ) && is_array( $_POST['course_instructor_filter'] ) ) {
            $query->set( 'author__in', $_POST['course_instructor_filter'] );
        }

        // Filter by price
        // TODO query courses has sale price
        if ( isset( $_POST['course_price_filter'] ) ) {
            switch ( $_POST['course_price_filter'] ) {
                case 'free':
                    $query->set( 'meta_query', array(
                        array(
                            'key'     => '_lp_price',
                            'compare' => 'NOT EXISTS'
                        )
                    ) );
                    break;
                case 'paid':
                    $query->set( 'meta_query', array(
                        array(
                            'key'     => '_lp_price',
                            'compare' => 'EXISTS'
                        )
                    ) );
                    break;
                case 'all':
                    break;

                default:

            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62409768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档