【发布时间】:2023-03-19 22:58:01
【问题描述】:
我正在使用 Timber 为当前位于本地开发环境中的 WordPress 网站设置主题。这是我第一个使用 Timber 的网站。使用起来很有趣,但我肯定还有一些东西要学——尤其是因为我更像是一个前端开发人员,而 PHP 不是我的强项。
我的搜索结果页面无法正常工作。 WordPress 似乎忽略了 search.php 文件并使用了 index.php 文件。我得到的搜索结果只是显示网站上与搜索查询无关的每个“帖子”的挑逗。除了标准的 WordPress 'Post' 和 'Page' 内容外,我还有一个 CPT 和 ACF 扩展类别内容需要显示在搜索结果中。
我有一个 search.php 和 search.twig 文件,并且我确定正在使用正确的 TWIG 模板。
我的搜索.php:
$templates = array( 'search.twig', 'archive.twig', 'index.twig' );
$context = Timber::get_context();
$context['title'] = 'Search results for '. get_search_query();
$context['posts'] = new Timber\PostQuery();
Timber::render( $templates, $context );
我的 index.php:
$context = Timber::get_context();
$context['posts'] = new Timber\PostQuery(); //was: Timber::get_posts();
$templates = array( 'index.twig' );
if ( is_home() ) {
array_unshift( $templates, 'search.twig', 'front-page.twig' );
}
Timber::render( $templates, $context );
请注意,我在上面的模板中添加了 search.twig,否则搜索结果页面使用的是 front-page.twig 模板。
我的 search.twig:
{% extends "base.twig" %}
{% block content %}
<h1>Your search results for:</h1>
{% for post in posts %}
<article class="tease tease-{{post.post_type}}" id="tease-{{post.ID}}">
<h2><a href="{{post.link}}">{{post.title}}</a></h2>
<p>{{post.get_preview}}</p>
{% if post.get_thumbnail %}
<img src="{{post.thumbnail.src}}" />
{% endif %}
</article>
{% endfor %}
{% endblock %}
而我的搜索表单代码很简单:
<form role="search" method="get" action="{{site.url}}/">
感谢收看!
【问题讨论】: