WordPress页面没有显示-替换为最后10个帖子?

时间:2017-05-25 作者:Kizzycocoa

我一直在努力开发一个上传文章的系统。特别是通过自定义帖子,谁的URL会根据ACF选择字段进行更改。

我取得了巨大的成功,这里的用户帮助我最终修复404个错误。但现在,我似乎又陷入了困境。父页面似乎不可编辑,迫使显示最后10篇帖子。

这是设置。我有一个页面,谁的育儿结构是社区=>文章=>理论。url为example.com/community/articles/theory/

当我访问该URL时,它只显示最后10篇帖子。不是自定义帖子,只是普通帖子。

我必须为文章自定义帖子类型更改永久链接的代码如下:

add_rewrite_tag( \'%category_type%\', \'([^&]+)\' );
register_post_type(
    \'articles\', array(
        \'labels\' => array(
            \'name\' => \'Articles\',
            \'singular_name\' => \'Article\',
            \'add_new\' => \'Add new article\',
            \'edit_item\' => \'Edit article\',
            \'new_item\' => \'New article\',
            \'view_item\' => \'View article\',
            \'search_items\' => \'Search articles\',
            \'not_found\' => \'No articles found\',
            \'not_found_in_trash\' => \'No articles found in Trash\',
            ),
        \'public\' => true,
        \'supports\' => array(
            \'title\',
            \'editor\',
            \'excerpt\',
            \'revisions\',
            \'thumbnail\'
        ),
        \'rewrite\' => array(\'slug\' => \'community/articles/%category_type%\'),
        \'menu_icon\' => "dashicons-groups",
        \'capability_type\' => array(\'article\',\'articles\'),
        \'map_meta_cap\' => true,
    )
);
<小时/>
function rem_articles_rewrite( $post_link, $id = 0 ){
    $post = get_post($id);
    if ( is_object( $post ) ){
        $ptype=get_post_type($post);
        if($ptype=="articles"){

            $category=get_field(\'category\',$post->ID);
            if( $category ){
                return str_replace( \'%category_type%\' , $category , $post_link );
            }
        }
    }
return $post_link;
}
确保文章出现在,例如,example.com/community/articles/theory/-ARTICLE_NAME-/. 但我担心它也会锁定example.com/community/articles/theory/ 页面,因此我无法通过常规页面部分编辑此页面。不知何故,它的回退不是404,而是网站的最后10篇帖子。

页面example.com/community/articles/ 似乎不受任何问题的影响。只有该页面的直接子级受到影响。子页面的其他子页面(自定义帖子文章本身)显示时没有问题。

有没有什么东西会立刻向任何人跳出来?我忽略了什么?

提前感谢您的回复!

1 个回复
最合适的回答,由SO网友:Milo 整理而成

问题在于使用post类型生成的重写规则——它们有点贪婪,正在捕获这些请求。WordPress正在尝试查询匹配的category_type, 它实际上不是对象类型,并且在没有任何其他有效查询参数的情况下,它运行主博客查询。

您可以以一种不太贪婪的方式手动生成post类型重写规则,或者您可以添加一个规则,在以下情况下只覆盖它们ARTICLE_NAME 不存在:

add_rewrite_rule(
    \'^community/articles/([^/]*)?/?$\',
    \'index.php?pagename=community/articles/$matches[1]\',
    \'top\'
);
在处理重写时,我建议Monkeyman Rewrite Analyzer 插件,它将在“管理”中的“工具”下为您提供一个新的菜单项,您可以在其中插入URL,并查看它们如何匹配以重写规则和解析查询变量。

结束
WordPress页面没有显示-替换为最后10个帖子? - 小码农CODE - 行之有效找到问题解决它

WordPress页面没有显示-替换为最后10个帖子?

时间:2017-05-25 作者:Kizzycocoa

我一直在努力开发一个上传文章的系统。特别是通过自定义帖子,谁的URL会根据ACF选择字段进行更改。

我取得了巨大的成功,这里的用户帮助我最终修复404个错误。但现在,我似乎又陷入了困境。父页面似乎不可编辑,迫使显示最后10篇帖子。

这是设置。我有一个页面,谁的育儿结构是社区=>文章=>理论。url为example.com/community/articles/theory/

当我访问该URL时,它只显示最后10篇帖子。不是自定义帖子,只是普通帖子。

我必须为文章自定义帖子类型更改永久链接的代码如下:

add_rewrite_tag( \'%category_type%\', \'([^&]+)\' );
register_post_type(
    \'articles\', array(
        \'labels\' => array(
            \'name\' => \'Articles\',
            \'singular_name\' => \'Article\',
            \'add_new\' => \'Add new article\',
            \'edit_item\' => \'Edit article\',
            \'new_item\' => \'New article\',
            \'view_item\' => \'View article\',
            \'search_items\' => \'Search articles\',
            \'not_found\' => \'No articles found\',
            \'not_found_in_trash\' => \'No articles found in Trash\',
            ),
        \'public\' => true,
        \'supports\' => array(
            \'title\',
            \'editor\',
            \'excerpt\',
            \'revisions\',
            \'thumbnail\'
        ),
        \'rewrite\' => array(\'slug\' => \'community/articles/%category_type%\'),
        \'menu_icon\' => "dashicons-groups",
        \'capability_type\' => array(\'article\',\'articles\'),
        \'map_meta_cap\' => true,
    )
);
<小时/>
function rem_articles_rewrite( $post_link, $id = 0 ){
    $post = get_post($id);
    if ( is_object( $post ) ){
        $ptype=get_post_type($post);
        if($ptype=="articles"){

            $category=get_field(\'category\',$post->ID);
            if( $category ){
                return str_replace( \'%category_type%\' , $category , $post_link );
            }
        }
    }
return $post_link;
}
确保文章出现在,例如,example.com/community/articles/theory/-ARTICLE_NAME-/. 但我担心它也会锁定example.com/community/articles/theory/ 页面,因此我无法通过常规页面部分编辑此页面。不知何故,它的回退不是404,而是网站的最后10篇帖子。

页面example.com/community/articles/ 似乎不受任何问题的影响。只有该页面的直接子级受到影响。子页面的其他子页面(自定义帖子文章本身)显示时没有问题。

有没有什么东西会立刻向任何人跳出来?我忽略了什么?

提前感谢您的回复!

1 个回复
最合适的回答,由SO网友:Milo 整理而成

问题在于使用post类型生成的重写规则——它们有点贪婪,正在捕获这些请求。WordPress正在尝试查询匹配的category_type, 它实际上不是对象类型,并且在没有任何其他有效查询参数的情况下,它运行主博客查询。

您可以以一种不太贪婪的方式手动生成post类型重写规则,或者您可以添加一个规则,在以下情况下只覆盖它们ARTICLE_NAME 不存在:

add_rewrite_rule(
    \'^community/articles/([^/]*)?/?$\',
    \'index.php?pagename=community/articles/$matches[1]\',
    \'top\'
);
在处理重写时,我建议Monkeyman Rewrite Analyzer 插件,它将在“管理”中的“工具”下为您提供一个新的菜单项,您可以在其中插入URL,并查看它们如何匹配以重写规则和解析查询变量。

相关推荐

Plain permalinks not working!

对于我的wordpress网站,普通永久链接不起作用。帖子url正在更改,但当我们单击帖子时,它不会重定向到帖子页面。它将出现在主页上。例如:http://example.com/?p=14523 如果我将永久链接更改为其他自定义格式,它将正常工作并显示帖子页面。例如:http://example.com/2018/09/01/postname/ 我尝试创建一个新的.htaccess 将永久链接更改为普通后的文件。仍然不工作。