Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WordPress搜索仅适用于帖子,不适用于页面_Wordpress_Search_Themes - Fatal编程技术网

WordPress搜索仅适用于帖子,不适用于页面

WordPress搜索仅适用于帖子,不适用于页面,wordpress,search,themes,Wordpress,Search,Themes,我正在处理自己的自定义WordPress主题,使用一个空白的默认模板启动。我还没有编辑search.php文件 我的许多WordPress帖子都是页面。不幸的是,站点搜索只检索帖子,而不是页面 你知道如何让主题同时搜索帖子和页面吗 以下是search.php的主要内容: <?php if (have_posts()) : ?> <h3>Search Results</h3> <?php include (TEMPLATEPATH .

我正在处理自己的自定义WordPress主题,使用一个空白的默认模板启动。我还没有编辑search.php文件

我的许多WordPress帖子都是页面。不幸的是,站点搜索只检索帖子,而不是页面

你知道如何让主题同时搜索帖子和页面吗

以下是search.php的主要内容:

<?php if (have_posts()) : ?>

    <h3>Search Results</h3>

    <?php include (TEMPLATEPATH . '/inc/nav.php' ); ?>

    <?php while (have_posts()) : the_post(); ?>

        <div <?php post_class() ?> id="post-<?php the_ID(); ?>">

            <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>

            <?php include (TEMPLATEPATH . '/inc/meta.php' ); ?>

            <div class="entry">
                <?php the_excerpt(); ?>
            </div>

        </div>

    <?php endwhile; ?>

    <?php include (TEMPLATEPATH . '/inc/nav.php' ); ?>

<?php else : ?>

    <h3>No posts found.</h3>

<?php endif; ?>

搜索结果
没有找到帖子。

缺少页面搜索和按发布日期而不是相关性排序的搜索结果是一个典型的WP问题。尝试将此代码添加到functions.php文件中

function wpshock_search_filter( $query ) {
    if ( $query->is_search ) {
        $query->set( 'post_type', array('post','page') );
    }
    return $query;
}
add_filter('pre_get_posts','wpshock_search_filter');

WP-Search具有该功能。您可以调整要在结果页面中显示的帖子类型。在您的Search.php中,找到循环并在其后面插入此代码。您可以识别循环,因为它通常以以下内容开始:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>
因此,您的代码应该如下所示:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>
<?php if (is_search() && ($post->post_type=='page')) continue; ?>


让我知道它是否有效。

无法访问页面。这不是问题所在。这不是关于相关性,而是关于完全缺失的页面。为什么这个答案被标记为正确?检查此项的“管理员”在哪里。只有当我拼写错误的句子时,它们才起作用。马纳西多西不认为这个答案不应该被否决。这不是公认的正确答案,但作者指出默认的WordPress搜索功能很糟糕是公平的。
<?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>
<?php if (is_search() && ($post->post_type=='page')) continue; ?>