我是Wordpress的新手。 我在StackOverflow上寻找了很多解决此问题的方法,但没有一个对我有用。 我正在使用Timber和ACF。
这里是情况:我做了4个自定义post_type(“新闻”,“产品”,“服务”和“地点”)。我为新闻创建了自定义页面。 ( page-news.twig )
在我的page.php
文件中,我添加了一个自定义查询,如下所示:
global $paged;
if (!isset($paged) || !$paged) {
$paged = 1;
}
$context = Timber::get_context();
$post = new TimberPost();
$context['post'] = $post;
$args = array(
'post_type' => 'news',
'posts_per_page' => 3,
'paged' => $paged,
'page' => $paged
);
$context['news'] = new Timber\PostQuery($args);
因此,我为页面设置的帖子数上限为3,并且在我的.twig文件中:
{% for single_news in news %}
{% include['news.twig', single_news] %}
{% endfor %}
{% if news.pagination.prev %}
<a href="{{news.pagination.prev.link}}" class="prev {{ news.pagination.prev.link|length ? '' : 'invisible'}}">Prev</a>
{% endif %}
{% if news.pagination.next %}
<a href="{{ news.pagination.next.link}}" class="next {{ news.pagination.next.link|length ? '' : 'invisible'}}">Next</a>
{% endif %}
当我转到新闻页面时,每页3条帖子(正确),它向我显示正确的Next
锚点。
问题是该链接将我带到不存在的/news/page/2
并给我404错误。我尝试了许多解决方案,例如pre_get_posts,但没有一个对我有用。
答案 0 :(得分:2)
分页仅适用于存档页面,而不适用于单个页面。请参阅The WordPress Template Hierarchy,以了解哪些内容可以作为存档页面。
这意味着您不能使用 page.php 作为显示新闻文章的模板文件。您有两种可能:
news
,则可以使用 archive.php ,甚至 archive-news.php 。post
,则可以选择要显示帖子存档的页面。显示您的帖子存档的模板文件将是 home.php 。如果您选择第一个选项,则需要确保在注册帖子类型时(通过register_post_type()
或插件),将public
选项设置为{{1} },并且您也将true
设置为has_archive
。
存档页面的问题在于,现在您无法使用页面通常具有的某些编辑功能。对于存档,您无法像使用页面一样使用编辑器设置标题或添加内容。但是,如果您使用ACF,则可以设置options page,并在其中添加“新闻页面”的选择。将其命名为true
,然后在
page_for_news
此方法实际上复制了自定义帖子类型的选项2。
此外,有关您的新闻帖子的提示也包含在Twig中:
$post = new Timber\Post( get_field( 'page_for_news', 'option' ) );
如果执行此操作,则Twig将尝试查找 news.twig 模板以及以{% for single_news in news %}
{% include['news.twig', single_news] %}
{% endfor %}
命名的模板。但是single_news
在这里不是字符串,而是single_news
的实例。所以这对您没有帮助。您可以改用以下内容:
Timber\Post