具有3个输入文本和3个主要问题输入文本的高级搜索表单

时间:2015-05-26 作者:Carl Willis

N、 我所有的工作都在wordpress上。

我正在制作一个高级表单,其中有3个输入文本,用于显示酒店列表。

问题是我尝试了无数的技巧和函数,但没有任何结果,我得到的唯一结果是当我用标签搜索时,但我也按地址和等级搜索。

另一个问题是,我第一次以第一种方式使用自定义分类法,然后我使用了metabox,但我找不到如何显示结果。

这是表格

enter image description here

我想创建一个表单,根据三个标准搜索酒店:按地址、标签和评级,所以我想问的是我需要做什么?我是否需要使用metabox或taxonomy,最终的问题是如何显示搜索结果,因为我尝试了分类法和metabox,但没有成功显示结果。

edit

这是我的搜索表

<form method="get" role="search" action="<?php bloginfo(\'url\'); ?>" id="searchform">
    <input type="text" name="adr" id="adress" value="" /> 
    <span class="sepinput">_</span>
    <input type="text" name="tag" id="tag" value="" /> 
    <span class="sepinput">_</span>
    <input type="text" name="dvoi" id="rate" value="" /> 
    <span class="sepinput">_</span>
    <input type="hidden" name="post_type" value="hotels" />
    <input type="submit" id="searchsubmit" value="Recherche" />
</form>
这是我在搜索页面上的代码,但没有使用它,然后我创建了一个存档酒店页面。

                <div id="main-area">
                    <?php
$args = array(
    \'post_type\'  => \'hotel\',
    \'posts_per_page\' => 3,
    \'paged\' => $paged,
    \'relation\' => \'AND\',
    \'meta_query\' => array(
        array(
            \'key\'     => \'hotel[adr]\',
            \'value\'   => $adr,
            \'compare\' => \'LIKE\',
        ),
        array(
            \'key\'     => \'hotel[dvoi]\',
            \'value\'   => $dvoi,
            \'compare\' => \'>\',
        ),
    ),
);
$wp_querysearch = new WP_Query( $args );
                    ?>
<?php if ($wp_querysearch->have_posts()) : while ($wp_querysearch->have_posts()) : $wp_querysearch->the_post(); ?>
<div class="all_hotel">
    <div class="hotel_image">
    <?php $post_id = get_the_ID();
            $hotel_data = get_post_meta( $post_id, \'_hotel\', true );
            if(has_post_thumbnail()) {
                $src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'image-style2\' );
                echo \'<img src="\' . $src[0] . \'" alt="" />\';
            } else {
                echo \'<img src="\' . get_bloginfo( \'stylesheet_directory\' ) .\'/images/indxglri1.png" alt="" />\';} ?>
        </div><!-- fin image -->
        <div class="hotel_content">
            <a href="<?php the_permalink(); ?>"><h1 class="hotel_title"><?php the_title(); ?></h1></a>
            <div class="hotel_subcontent">
                <div class="hotel_text">
                    <?php $trimmedtxt = substr(get_the_content(),0,224);
                    echo $trimmedtxt; ?>
                </div><!--end hotel_text -->
        </div>
</div>
<?php endwhile;?>
<?php else :
    echo \'Pas de hotels pour l\\\'instant\';
endif;?>
                </div> <!-- end #main-area -->
我是否需要匹配表单id或名称以及匹配它们所需的内容。因为那是我的代谢箱。

<input type="text" id="adr" value="<?php echo $adr; ?>" name="hotel[adr]" size="40" />
<input type="text" id="dvoi" value="<?php echo $dvoi; ?>" name="hotel[dvoi]" size="40" />

EDIT2

                    <?php
$voiture = $_GET[\'voiture\'];
$adresses = $_GET[\'adresses\'];
$tg = $_GET[\'tag\'];
$post_id = get_the_ID();
$hotel_data = get_post_meta( $post_id, \'_hotel\', true );
$dvoi = ( empty( $hotel_data[\'dvoi\'] ) ) ? \'\' : $hotel_data[\'dvoi\'];
$adr = ( empty( $hotel_data[\'adr\'] ) ) ? \'\' : $hotel_data[\'adr\'];       
$args = array(
    \'post_type\'  => \'hotels\',
    \'posts_per_page\' => 3,
    \'relation\' => \'OR\',
    \'meta_query\' => array(
        array(
            \'key\'     => $adr,
            \'value\'   => $adresses,
            \'compare\' => \'LIKE\',
        ),
        array(
            \'key\'     => \'tag\',
            \'value\'   => $tg,
            \'compare\' => \'LIKE\',
        ),
        array(
            \'key\'     => $dvoi,
            \'value\'   => $voiture,
            \'compare\' => \'=\',
        ),
    ),
);
$wp_querysearch = new WP_Query( $args );
                    ?>
<?php if ($wp_querysearch->have_posts()) : while ($wp_querysearch->have_posts()) : $wp_querysearch->the_post(); ?>
这是我的代码,但它仍在浏览所有显示结果的内容,并显示else消息。

<?php endwhile;?>
<?php else :
    echo \'Pas de hotels pour l\\\'instant\';
endif;?>

1 个回复
最合适的回答,由SO网友:sakibmoon 整理而成

由于您已经得到了标签的结果,我将仅对地址和评级给出建议。

对于您当前的情况,最好的选择是使用Wordpress post meta来存储这些值。然后您可以使用元查询来检索这些帖子。

$args = array(
    \'post_type\'  => \'hotel\',
    \'meta_query\' => array(
        array(
            \'key\'     => \'address\',
            \'value\'   => $adr,
            \'compare\' => \'LIKE\',
        ),
    ),
);
$query = new WP_Query( $args );
用于评级

$args = array(
    \'post_type\'  => \'hotel\',
    \'meta_query\' => array(
        array(
            \'key\'     => \'rating\',
            \'value\'   => $rating,
            \'compare\' => \'>\',
        ),
    ),
);
$query = new WP_Query( $args );

EDIT

您可以将元查询组合在一个查询中,如下所示

$args = array(
    \'post_type\'  => \'hotel\',
    \'relation\' => \'AND\'
    \'meta_query\' => array(
        array(
            \'key\'     => \'address\',
            \'value\'   => $adr,
            \'compare\' => \'LIKE\',
        ),
        array(
            \'key\'     => \'rating\',
            \'value\'   => $rating,
            \'compare\' => \'>\',
        ),
    ),
);
$query = new WP_Query( $args );
您也可以选择OR 元查询之间的关系。

无论何时get_search_form() 被称为,内容为searchform.php 包括在内。这是默认的搜索页面。如果要保留该搜索选项,应该在其他地方包含此代码。可能在另一个文件中,并将其包含在要显示自定义搜索选项的位置。

也就是说,您的主要问题是如何接收传递的值。当您使用时GET 方法,您可以使用$_GET[\'adr\'] 在提交表单后接收值。但你应该改名post_typetag wordpress内置的查询变量。

EDIT

您正在将帖子元另存为数组。不要那样做。单独保存它们。保存它,以便通过$adr = get_post_meta($post_id, \'adr\', true); 和评级依据$dvoi = get_post_meta($post_id, \'dvoi\', true);

您的metabox代码应为

<input type="text" id="adr" value="<?php echo $adr; ?>" name="adr" size="40" />
<input type="text" id="dvoi" value="<?php echo $dvoi; ?>" name="dvoi" size="40" />
下面是一个元查询,用于显示评分相等的帖子$voiture 或类似地址$adresses 并包含tag$tag。

$args = array(
    \'tag\' => $tag,
    \'post_type\'  => \'hotels\',
    \'posts_per_page\' => 3,
    \'relation\' => \'OR\',
    \'meta_query\' => array(
         array(
            \'key\'     => \'adr\',
            \'value\'   => $adresses,
            \'compare\' => \'LIKE\'
        ),
        array(
            \'key\'     => \'dvoi\',
            \'value\'   => $voiture,
            \'compare\' => \'=\'
        )
    )
);
$wp_querysearch = new WP_Query( $args );

结束

相关推荐

使用新值保存metabox_wp_page_模板

我创建了一个元框来显示页面模板,并使用单选按钮选择另一个模板。这是当前page attributes 代谢箱。我在保存部分遗漏了一些东西。这个_wp_page_template 无法更新。以下是我目前拥有的:<?php // Add the Meta Box function add_meta_box_template_picker() { add_meta_box( \'meta_box_template_picker\', // $id