Wordpress 单个模板作为模板加载时没有发布数据

问题描述

我有一个自定义帖子模板 (single.PHP),在正常情况下访问文章时可以正常工作:

domain.com/news/article-1/

但是当我在一个虚拟新闻页面(基于另一个查询)加载 single.PHP 时,我在检查 have_posts() 时总是出错。例如:

domain.com/category/news/article-2/

routing.PHP (这包含在functions.PHP中)

/**
 * News item page
 */
if ($category_key && $news_key && count($a_current_url) - $news_key == 3):
    $news_slug = $a_current_url[$news_key + 1];
    add_action('template_redirect','override404',0);
    add_filter('template_include',function () {
        get_template_part('single');
    });
endif;

在这代码中,我检查是否需要包含单个模板的特定新闻页面。我还设置了全局 $news_slug 变量。

single.PHP

因此,由于 has_posts 始终为空,因为 404 没有加载任何帖子,因此我需要自己加载:

if (!have_posts()):
    $args = [
        'name' => $news_slug,'post_type' => 'post','post_status' => 'publish','numberposts' => 1,'suppress_filters' => 0,];

    $post = get_posts($args);
    setup_postdata($post[0]->ID);
endif;

但无论我尝试什么,have_posts() 仍然是错误的。

在这里做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)