wordpress 404页面找不到页面找不到

yhqotfr8  于 2023-05-28  发布在  WordPress
关注(0)|答案(1)|浏览(170)

我在我的网站上创建了几个“假”页面来显示来自另一个数据库的信息。我最近采用了 gutenberg 编辑器块的主题,但我遇到了这个问题。如果我在域的根文件夹中包含theme.json,则不会显示“假”页面并返回404错误。如果我删除theme.json文件,我会丢失css样式,但页面可以再次工作。有人知道如何解决这个问题吗?

add_filter( 'the_posts', 'generate_fake_page', 0);
function generate_fake_page($posts) {
        $post = new stdClass;
            $post->post_author    = 1;
            $post->post_name      = $url_slug;
            $post->guid           = home_url() . '/other/';
            $post->post_title     = 'My fake page';
            // content 
            $post->post_content   = $content;
            $post->ID             = $my_uniq_id;
            $post->post_type      = 'page';
            $post->post_status    = 'static';
            $post->post_excerpt   = '';
            $post->comment_status = 'closed';
            $post->ping_status    = 'open';
            $post->comment_count  = 0;
            $post->post_date      = $my_date
            $post->post_date_gmt  = $my_date;
            $posts                = NULL;
            $posts[]              = $post;

            // make wpQuery believe this is a real page too
            $wp_query->is_page             = true;
            $wp_query->is_singular         = true;
            $wp_query->is_home             = false;
            $wp_query->is_archive          = false;
            $wp_query->is_category         = false;
            $wp_query->is_attachment       = false;
            unset( $wp_query->query[ 'error' ] );
            $wp_query->query_vars[ 'error' ] = '';
            $wp_query->is_404 = false;
    return $posts;
}
brccelvz

brccelvz1#

奇怪我在这里也有同样的事情。我是解决了,但我不知道这能不能解决你的问题。我将写下我的旅程,希望你能从中提取一些信息,为你指出正确的方向:

  • 背景信息:* 发生的事情是,我有一个页面https://project.local/slovenie/,上面有一个Facet,显示了一个分类术语列表。其中一个术语与它所显示的页面具有相同的蛞蝓。

所以这触发了一个404 https://project.local/slovenie/?fwp_regios_select=slovenie

  • 第一次尝试:* 首先,我认为我的问题是FacetWP和通过facetwp_preload_url_vars预加载一些值。我关闭了过滤器,它开始工作了。但是FacetWP里没有什么奇怪的事情发生。

但是,唉,事实并非如此。这应该有用的。

  • 第二次尝试:* 好的,让我们再进一步搜索。我在一个多站点上工作,它有一个奇怪的结构和很多“切换博客”。

我一步一步地禁用了代码初始化。这里是parse_query,我得到了pre_get_posts
好,回到我的问题:在我的pre_get_post中,我做了一个$query->is_archive()检查。不是\is_archive(),而是wp_query上的变量。还有wp_templatewp_template_partacf-taxonomyacf-post-typemy-custom-post-type,或者在我的情况下,[0 => 'page']是我所在页面的查询。
$query->is_archive()也是TRUE,用于menu_nav_items之类的东西,所以我发现我需要更改那里的代码。我添加了一个检查,如果这个pre_get_posts是为我的custom-post-type通过检查
顺便说一句!在创建theme.json的那一刻,我注意到了一个"post_type" => "wp_global_styles"。因此,在某些地方,正在查询内容,并且可能the_posts并不总是期望您在$posts中填充的内容。
您可能的解决方案:检查WP_Query $query,它可以作为the_posts的第二个参数传递。https://developer.wordpress.org/reference/hooks/the_posts/类似于:
( isset( $query->query['post_type'] ) && \is_array( $query->query['post_type'] ) && \in_array('page', $query->query['post_type'] ) )或者如果$query->query['post_type']是字符串,则检查它是否是字符串。但你明白我的意思。
或者在wp操作的条件中添加过滤器,但我不知道这是否太晚了。
希望这能帮上忙👋

相关问题