我是Wordpress的新手。我在StackOverflow上找了很多解决这个问题的方法,但是没有一个对我有用。我用的是木材和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,但没有一个对我有用。
发布于 2018-11-11 11:08:38
分页只适用于存档页,而不适用于单数页。请参阅WordPress模板层次结构以获得可算作存档页面的内容。
这意味着您不能使用page.php作为模板文件来显示新闻文章。这里有两种可能性:
news。post,则可以选择要显示文章存档的页面。然后,显示您的帖子存档的模板文件将是home.php。如果选择第一个选项,则需要确保在注册post类型(通过register_post_type()或插件注册)时,将public选项设置为true,并将has_archive设置为true。
归档页面的问题是,现在您无法使用通常对页面具有的一些编辑功能。对于存档,您不能设置标题或添加编辑器内容,就像使用页面一样。但是,如果您使用ACF,您可以设置一个选项页,其中为您的新闻页面添加一个select。将其命名为page_for_news,然后,在模板文件中,您可以选择Timber应该在归档页面上使用的合适的帖子。
$post = new Timber\Post( get_field( 'page_for_news', 'option' ) );此方法实际上复制了自定义Post类型的选项2。
另外,在Twig中也有关于你的新闻文章的提示:
{% for single_news in news %}
{% include['news.twig', single_news] %}
{% endfor %}如果这样做,Twig将尝试找到一个news.twig模板以及一个以single_news命名的模板。但是single_news在这里不是一个字符串,而是Timber\Post的一个实例。所以这对你没什么帮助。您可以使用以下方法:
{% for single_news in news %}
{% include 'news.twig' %}
{% endfor %}https://stackoverflow.com/questions/53170951
复制相似问题