添加帖子和评论菜单不再可见

时间:2017-11-27 作者:Luke

多年来,我一直使用以下技术来添加/news 我的帖子URL的前缀。我在functions.php 自定义插件的:

function my_change_post_object() {
  global $wp_post_types;
  $post = &$wp_post_types[\'post\'];
  $post->has_archive = \'news\';
  $post->rewrite = array(
    \'slug\' => \'news\',
    \'with_front\' => FALSE,
  );
}

add_action( \'init\', \'my_change_post_object\' );
以上基本上允许您触发archive.php 浏览到时的模板/news 在网站上。

然而,自从我最近升级到4.9以来,这个功能已经停止正常工作。我仍然可以浏览到/news URL并查看archive.php 模板,但是,当我登录到管理员,然后在帖子部分下,我无法再查看帖子。我只能查看/修改类别和标记。此外,评论部分也没有任何子菜单。

我的代码现在似乎在WordPress本身中引发了一些安全/权限问题,我不再具有某些权限(我以管理员角色登录)。

当我禁用代码时,管理员工作正常,但浏览到/news 结果为404. 然而,直接浏览帖子页面是可行的。

我试图删除上述代码,只是将永久链接结构设置为自定义URL,/news/%postname%/, 但这会导致404 浏览到时/news.

如何触发archive.php 浏览到时的模板/news URL?

1 个回复
SO网友:Kyle

以下是我的解决方案,无需更改post对象:

添加新的重写规则,如果需要,请查找此规则:

add_rewrite_rule("^news/?$", "index.php?post_type=post&category_name=news", "top");
添加category\\u name=news会触发存档。要使用的php文件。是的,您需要将类别新闻添加到每篇文章中,但如果您在写作设置中将新闻设置为默认类别,这并没有什么大不了的。

更改存档后链接:

function my_post_archive_link( $link, $post_type ) {
    if ( $post_type == \'post\' ) {
        $link = site_url( \'/news/\' );
    }

    return $link;
}
add_filter( \'post_type_archive_link\', \'my_post_archive_link\', 10, 2 );
这是我想到的最好的解决方案,无需破解post对象或创建新的自定义post类型。

结束

相关推荐

Custom fields in Permalinks?

我想知道如何将自定义字段值添加到自定义帖子类型的永久链接中?例如,我有自定义的post文件ex:cpt cities。php,它处理注册自定义帖子类型和所有这些细节。在该文件中,我试图将其永久链接设置为包含一个“cities”自定义字段值。我可以使用add\\u permastruct设置永久链接。但是,我无法获取自定义字段的值,并且get\\u post\\u meta()不起作用。这可能是由于$post->ID不起作用(因为它位于自定义post类型文件中,而不是post循环)。有人知道这样一种在