如何创建自定义搜索页面

时间:2018-06-13 作者:Kirasiris

所以我正在努力寻找。进行搜索时,php文件循环浏览三种自定义帖子类型。

我目前有三个CPT,post、anime、peliculas,我目前使用的一个功能将只查找标题,因此当有人在搜索输入中键入内容时,模板应显示所述CPT中与关键字匹配的所有帖子,如果没有post。。。。比如说在动画中,它应该显示一条post not found(在该cpt中)的消息。

为了让它更清楚、更容易理解,我正试图实现以下目标:

custom page template

这是我第一次这样做,所以我没有经验,但我仍然试图通过在搜索中创建一些自定义查询来修改它。php文件,但它不起作用。

这是我正在使用的模板:

<?php get_header(); ?>
<div class="container">
    <?php echo get_breadcrumb(); ?>
    <div class="row">
        <div class="col-md-12">
            <h1 class="page-header"><?php wp_title(\'\'); ?></h1>
            <!-- Posts  -->
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h1 class="panel-title"><i class="fa fa-eye" aria-hidden="true"></i> Posts</h1>
                </div>
                <div class="panel-body scrolling-wrapper" id="video_player">
                    <?php if(have_posts()) : while(have_posts()) : the_post(); ?>
                    <div class="col-md-6 resultados_search text-center card">
                        <a href="<?php the_permalink(); ?>">
                            <img src="<?php the_post_thumbnail_url() ?>" alt="" style="width: 100%;min-height: 300px;height: 300px;">
                        </a>
                        <figcaption>
                            <span class="pull-left"><?php the_title(); ?></span>
                        </figcaption>
                    </div>
                <?php endwhile; ?>
                <?php else : ?>
                    <div class="alert alert-danger" id="alerta_error">Ningun post con la keyword</div>
                <?php endif; ?>
                <?php wp_reset_query(); ?>
                </div>
            </div>
            <!-- Animes -->
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h1 class="panel-title"><i class="fa fa-eye" aria-hidden="true"></i> Animes</h1>
                </div>
                <div class="panel-body scrolling-wrapper" id="video_player">
                    <?php
                        $animes = new WP_Query(array(
                            \'post_type\' => \'anime\',
                            \'post_status\'   => \'publish\',
                            \'post_parent\' => 0,
                            \'public\'    => true,
                        ));
                    ?>
                    <?php if($animes->have_posts()) : while($animes->have_posts()) : $animes->the_post(); ?>
                    <div class="col-md-2 resultados_search text-center card">
                        <a href="<?php the_permalink(); ?>">
                            <img src="<?php the_post_thumbnail_url() ?>" alt="" style="width: 100%;min-height: 300px;height: 300px;">
                        </a>
                        <figcaption>
                            <span class="pull-left"><?php the_title(); ?></span>
                        </figcaption>
                    </div>
                <?php endwhile; ?>
                <?php else : ?>
                    <div class="alert alert-danger" id="alerta_error">Ningun post con la keyword</div>
                <?php endif; ?>
                <?php wp_reset_query(); ?>
                </div>
            </div>
            <!-- Peliculas -->
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h1 class="panel-title"><i class="fa fa-eye" aria-hidden="true"></i> Peliculas</h1>
                </div>
                <div class="panel-body scrolling-wrapper" id="video_player">
                    <?php
                        $peliculas = new WP_Query(array(
                            \'post_type\' => \'peliculas\',
                            \'post_status\'   => \'publish\',
                            \'post_parent\' => 0,
                            \'public\'    => true,
                        ));
                    ?>
                    <?php if($peliculas->have_posts()) : while($peliculas->have_posts()) : $peliculas->the_post(); ?>
                    <div class="col-md-2 resultados_search text-center card">
                        <a href="<?php the_permalink(); ?>">
                            <img src="<?php the_post_thumbnail_url() ?>" alt="" style="width: 100%;min-height: 300px;height: 300px;">
                        </a>
                        <figcaption>
                            <span class="pull-left"><?php the_title(); ?></span>
                        </figcaption>
                    </div>
                <?php endwhile; ?>
                <?php else : ?>
                    <div class="alert alert-danger" id="alerta_error">Ningun post con la keyword</div>
                <?php endif; ?>
                <?php wp_reset_query(); ?>
                </div>
            </div>
        </div>
    </div>
</div>
<?php get_footer(); ?>
提前谢谢。

注意:如果可能的话,我只想使用一个文件(search.php),而不必创建自定义页面模板。。。。如果真的有必要的话,我会的。

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

您不需要额外的查询,只需按帖子类型对搜索结果进行排序即可。你可以找到这样做的方法here.然后,在你的搜索中。php模板,您需要检查帖子类型并根据需要进行操作。。

while (have_posts()) : the_post();
    $post_type = get_post_field( \'post_type\', get_the_ID() );
    if ( $post_type === \'anime\' ) :
        //load a template or place your code here
        get_template_part( \'template-parts/content\', \'my-super-anime-template\' );
        //this example would load /your-theme/template-parts/content-my-super-anime-template.php
    else :
        //or pass a variable
        get_template_part( \'template-parts/content\', $post_type );
        //this example would load /your-theme/template-parts/content-post.php
    endif;
endwhile;

结束

相关推荐

echo plugin results on pages

我正试图通过插件在wordpress的前端得到一个可以回应的查询,但没有太大成功。我们将不胜感激。下面是我使用的简单脚本: function getPageIDs() { include_once($_SERVER[\'DOCUMENT_ROOT\'].\'/stage/wp-config.php\' ); global $wpdb; $row = $wpdb->get_row( \'SELECT p