首页 文章

Wordpress自定义搜索结果

提问于
浏览
1

我有一个Wordpress自定义搜索表单,用于搜索各种建筑物的楼层 . 例如,当用户搜索1000到1500平方英尺之间的楼层时,他将获得所有建筑物的列表,这些建筑物之间具有空闲楼层空间 .

搜索值存储在cookie中,因为我需要在单个构建页面上使用它们 .

在单个建筑物页面上,有一个部分显示符合用户搜索条件的楼层 .

它与我前段时间添加的地板一起工作正常 . 当我添加新楼层时,它们不会显示在单个建筑物页面上

那可能是什么?这是我编写的代码,用于显示单个构建页面的匹配楼层:

<table class="table" id="tab1C">
    <?php include( get_template_directory().'/inc/function-search.php' );
    $categories = get_the_category();
    $category_id = $categories[0]->cat_name;
    $args = array(
        'meta_query'    =>  array(
                                $sq_array,
                                $mt_array,
                                $prelet_array,
                                $date_array,
                            ),
        'category_name' => $category_id,
    );

    $i = 0;
    $search = array_merge($args); 
    $propertySearch = new WP_Query( $search ); ?>
    <?php $terms = get_the_terms( get_the_ID(), 'category');
    if( !empty($terms) ) : $term = array_pop($terms); ?>
        <?php if( $propertySearch->have_posts() ) : while( $propertySearch->have_posts() ) : $propertySearch->the_post(); ?>
            <?php get_template_part( 'content', 'table' ); ?>
            <?php $i++; ?>
        <?php endwhile; endif;  
        wp_reset_postdata(); ?>
    <?php endif; ?>
</table>

这是function-search.php包含的

<?php

$_minsq     = $_GET['minsq'] != '' ? $_GET['minsq'] : '';
$_maxsq     = $_GET['maxsq'] != '' ? $_GET['maxsq'] : '';
$_minmt     = $_GET['minmt'] != '' ? $_GET['minmt'] : '';
$_maxmt     = $_GET['maxmt'] != '' ? $_GET['maxmt'] : '';
$unit   = $_GET['unit'] != '' ? $_GET['unit'] : '';
$prelet     = $_GET['prelet'] != '' ? $_GET['prelet'] : '';
$date   = $_GET['date'] != '' ? $_GET['date'] : '';

$sorter     = $_GET['sorter'] != '' ? $_GET['sorter'] : '';

$sq_array       = array();
$mt_array       = array();
$prelet_array   = array();
$date_array     = array();
$sorter_array   = array();


if ( isset( $_COOKIE["unit"] )){
    if ($_COOKIE["unit"] == "ft") {
        if ( isset( $_COOKIE["minsq"] )){
            $value_min = intval( $_COOKIE["minsq"] );
            //update_post_meta( $post->ID, 'wpcf-square-feet', $value_min );  
        }
        if ( isset( $_COOKIE["maxsq"] )){
            $value_max = intval( $_COOKIE["maxsq"] );
            //update_post_meta( $post->ID, 'wpcf-square-feet', $value_max );  
        }

        $sq_array = array(
            array (
                'key'     => 'wpcf-square-feet',
                'value'   => array( $value_min, $value_max ),
                'type'    => 'numeric',
                'compare' => 'BETWEEN',
            ),
            array(
                'key'     => 'wpcf-square-feet',
                'value'   => $value_min,
                'type'    => 'numeric',
                'compare' => '>=',
            ),
            array(
                'key'     => 'wpcf-square-feet',
                'value'   => $value_max,
                'type'    => 'numeric',
                'compare' => '<=',
            )
        );
    } elseif ($_COOKIE["unit"] == "mt") {
        if ( isset( $_COOKIE["minmt"] )){
            $value_minmt = intval( $_COOKIE["minmt"] );
            //update_post_meta( $post->ID, 'wpcf-square-meters', $value_minmt );  
        }
        if ( isset( $_COOKIE["maxmt"] )){
            $value_maxmt = intval( $_COOKIE["maxmt"] );
            //update_post_meta( $post->ID, 'wpcf-square-meters', $value_maxmt );  
        }

        $mt_array = array(
            array (
                'key'     => 'wpcf-square-meters',
                'value'   => array( $value_minmt, $value_maxmt ),
                'type'    => 'numeric',
                'compare' => 'BETWEEN',
            ),
            array(
                'key'     => 'wpcf-square-meters',
                'value'   => $value_minmt,
                'type'    => 'numeric',
                'compare' => '>=',
            ),
            array(
                'key'     => 'wpcf-square-meters',
                'value'   => $value_maxmt,
                'type'    => 'numeric',
                'compare' => '<=',
            )
        );
    }
}

if ( isset( $_COOKIE["prelet"] )){
    if ($_COOKIE["prelet"] != "yes") {
        $value_prelet = 2;
        //update_post_meta( $post->ID, 'wpcf-prelet', $value_prelet );

        $prelet_array = array(
            'key'     => 'wpcf-prelet',
            'value'   => $value_prelet,
            'type'    => 'numeric',
            'compare' => '=',
        );
    }   
};


if ( isset( $_COOKIE["date"] ) &&   $date != ""){
    $value_date = intval( $_COOKIE["date"] );
    //update_post_meta( $post->ID, 'wpcf-completition-date', $value_date ); 

    $date_array = array(
        'key'     => 'wpcf-completition-date',
        'value'   => $value_date,
        'type'    => 'numeric',
        'compare' => '=',
    );
};

if ( isset( $sorter )){
    if ($sorter == "0") {
        $sorter_array = array(
            'meta_key'  => 'wpcf-square-feet',
            'orderby'   => 'meta_value_num',
            'order'         => 'DESC'
        );
    } elseif ($sorter == "1") {
        $sorter_array = array(
            'meta_key'  => 'wpcf-square-feet',
            'orderby'   => 'meta_value_num',
            'order'         => 'ASC'
        );
    }
}

?>

这是显示楼层的单个建筑页面

enter image description here

这是单一的建筑物页面,地板不会出现

enter image description here

它们都使用相同的代码并具有相同的搜索条件,但它不适用于新添加的楼层 .

我希望这一切都有意义,并且会有一个善良的灵魂能够帮助我 . 我必须在明天上午9点之前提供这个,我一直在努力解决这一问题而没有成功 . 我非常感谢任何帮助,谢谢 .

1 回答

  • 0

    问题在于类别名称,它以数字开头..!我把它改成了一个字符串,现在可以了 . 5个小时后....

相关问题