Wordpress订单自定义帖子类型

时间:2016-04-18 17:50:34

标签: wordpress search posts

我希望有人可以帮助我。我是php的新手,所以在工作中学习非常多。

我正在自定义现有的Wordpress主题,但我遇到主题高级搜索/结果的问题。

主题无法订购搜索结果,我知道Wordpress的默认订单是按日期排序。目前,如果我执行搜索,结果将按日期顺序显示,但我需要将结果从高到低的价格。

目前的代码如下

<?php /* If there are no posts to display, such as an empty archive page */ ?>
<?php if ( ! have_posts() ) : ?>
    <article id="post-0" class="post error404 not-found">
        <h1 class="posttitle"><?php _e( 'Not Found', THE_LANG ); ?></h1>
        <div class="entry">
            <p><?php _e( 'Apologies, but no results were found for the requested property archive. Perhaps searching will help find a related post.', THE_LANG ); ?></p>
        </div>
    </article>
<?php endif; ?>

<div class="nvr-prop-container row">
<?php if( have_posts() ){ ?>
    <div class="search-title twelve columns">
        <h4><?php _e('Search Result', THE_LANG); ?> (<?php echo $wp_query->post_count; ?>)</h4>
    </div>

    <?php
    $nvr_idnum = 0;
    $nvr_typecol = "nvr-prop-col";
    $nvr_imgsize = "property-image";
    ?>
    <ul id="nvr-prop-search" class="<?php echo esc_attr( $nvr_typecol ); ?>">

    <?php
    while ( have_posts() ) : the_post(); 
            $nvr_idnum++;

            echo nvr_prop_get_box( $nvr_imgsize, get_the_ID(), 'element columns', $nvr_unit, $nvr_cursymbol, $nvr_curplace );


            $nvr_classpf=""; 

    endwhile; // End the loop. Whew.
    ?>

然后我决定尝试对结果进行排序,因此我创建了

$sort_properties = new WP_Query(array(
    'post_type'         => 'properties',
    'meta_key'          => $nvr_initial.'_price',
    'meta_value'        => $nvr_price,
    'orderby'           => 'meta_value_num date',
    'order'             => 'DESC',
));

<?php /* If there are no posts to display, such as an empty archive page */ ?>
    <?php if ( ! have_posts() ) : ?>
        <article id="post-0" class="post error404 not-found">
            <h1 class="posttitle"><?php _e( 'Not Found', THE_LANG ); ?></h1>
            <div class="entry">
                <p><?php _e( 'Apologies, but no results were found for the requested property archive. Perhaps searching will help find a related post.', THE_LANG ); ?></p>
            </div>
        </article>
    <?php endif; ?>

    <div class="nvr-prop-container row">
    <?php if( $sort_properties->have_posts() ){ ?>
        <div class="search-title twelve columns">
            <h4><?php _e('Search Result', THE_LANG); ?> (<?php echo $wp_query->post_count; ?>)</h4>
        </div>

        <?php
        $nvr_idnum = 0;
        $nvr_typecol = "nvr-prop-col";
        $nvr_imgsize = "property-image";
        ?>
        <ul id="nvr-prop-search" class="<?php echo esc_attr( $nvr_typecol ); ?>">

        <?php
        while ( $sort_properties->have_posts() ) : $sort_properties->the_post(); 
                $nvr_idnum++;

                echo nvr_prop_get_box( $nvr_imgsize, get_the_ID(), 'element columns', $nvr_unit, $nvr_cursymbol, $nvr_curplace );


                $nvr_classpf=""; 

        endwhile; // End the loop. Whew.
        ?>

现在,当我执行搜索时,帖子会根据价格进行排序,这很棒但是......现在无论我如何搜索现在正在显示的所有网站帖子。

我觉得我已经如此接近寻找解决方案,但如果有人对此提出建议,我将非常感激。

亲切的问候

S

2 个答案:

答案 0 :(得分:0)

我认为你必须添加Search Parameter并且可能使用新的meta_query结构:

$search_query = get_search_query();
$sort_properties = new WP_Query(array(
    'post_type'         => 'properties',
    's'                 => $search_query,
    'orderby'           => 'meta_value_num',
    'meta_query' => array(
        'key'          => $nvr_initial.'_price',
        'value'        => $nvr_price,
    )
));

我记得有些麻烦,不使用“meta_query”=&gt; array()用于多个条件。

答案 1 :(得分:0)

您是否尝试过仅按'meta_val_num'排序,而不是'date',如:

    $args = array(
    'post_type' => 'product',
    'orderby'   => 'meta_value_num',
    'meta_key'  => 'price',
);
$query = new WP_Query( $args );

代码来自:https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters