将创建的页面用作搜索结果页面和自定义模板

时间:2014-05-11 作者:SixfootJames

我希望我的客户能够通过选择我为其创建的模板之一(page-two-column.php或page-three-column.php)来控制搜索结果页面的外观,以便他们可以更改横幅图像等元素。

因此,我在WP仪表板中创建了一个名为Search Results的新页面,该页面返回以下mysite。com/搜索结果/

默认情况下,WordPress会创建类似于此mysite的URL。com/?s=产品

浏览了大量示例in the codex, 我遇到了这段代码,我认为它可以满足我的需要。

// Use the two column template as the search result.
add_action(\'template_include\', \'new_search_tmpl\');
function new_search_tmpl( $template ) {
  if ( is_search() ) {
     $t = locate_template(\'page-two-column.php\', false);
     if ( ! empty($t) ) $template = $t;
  }
  return $template;
}
然后,在第二页的列中。php我正在检查我们是否请求这样的搜索结果。。。

<!-- SEARCH PAGE -->
<?php if (is_search()): ?>
    <a href="<?php echo get_permalink(); ?>"><?php the_title();  ?></a>
<?php else: ?>
    <article id="post-not-found" class="hentry clearfix">
        <header class="article-header">
            <h3><?php _e( "It looks like we couldn\'t find what you were looking for!", \'bonestheme\' ); ?></h3>
        </header>
        <section class="entry-content">
            <p><?php _e( \'Try a different search.\', \'bonestheme\' ); ?></p>
        </section>
        <footer class="article-footer">
                <p><?php // _e( \'This is the error message in the page.php template.\', \'bonestheme\' ); ?></p>
        </footer>
    </article>
<?php endif ?>
来自原始搜索。我想要覆盖的php页面<人力资源/>EDIT进一步的测试表明,is确实使用了双列模板,这很好,但是,我仍然需要它来从我正在创建的搜索结果页面中提取横幅图像。

现在,我可以使用以下代码将搜索结果特色图像拉入搜索页面:

<?php if (is_search()) {
   echo get_the_post_thumbnail( \'1711\', \'1920\' );
}?>

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

这就是最终对我起作用的原因。

要从另一个页面拉入横幅(特色)图像,请在WordPress中创建搜索结果页面,并确保使用搜索排除插件将其从搜索结果中排除,然后添加特色图像并将其弹出到两列自定义模板中:

<?php if (is_search()) { 
    $attachment_id = 1711; // attachment ID
    $image_attributes = wp_get_attachment_image_src( get_post_thumbnail_id($attachment_id), \'full\' ); // returns an array
    if( $image_attributes ) { ?> 
        <div class="top-background" style="background: url(<?php echo $image_attributes[0]; ?>) !important;"></div>             
    <?php }?>
<?php }?>
要强制wordpress使用两列自定义模板作为搜索结果页,请执行以下操作:

<!-- SEARCH PAGE -->
<?php if (is_search()): ?>
    <section class="entry-content clearfix" itemprop="articleBody">
        <ul>
            <li>
                <h3><a href="<?php echo get_permalink(); ?>"><?php the_title();  ?></a></h3>
                <?php 
                    $content = get_the_content();
                    $trimmed_content = wp_trim_words( $content, 40, \'<a href="\'. get_permalink() .\'"> ...Read More</a>\' );
                    echo $trimmed_content;
                 ?>
            </li>
         </ul>
    </section>    
<?php endif ?>

结束

相关推荐

add_rewrite_rule to search

新手WordPress开发者。我需要像这样映射WordPress URLwww.example.com/user/Username 基于该用户名的搜索结果我已经有了使用url进行搜索的页面www.example.com/search-results/?name=Username在functions.php 我有add_action( \'init\', \'add_username_rules\' ); function add_username_rules() { glo