WordPress:添加目录以发布具有功能的 slug

Posted

技术标签:

【中文标题】WordPress:添加目录以发布具有功能的 slug【英文标题】:WordPress: Add directory to post slug with function 【发布时间】:2021-09-14 11:34:17 【问题描述】:

我想在每个帖子 slug 之前添加一个 /news/。像这样:

example.com /news/ post-slug/

如果我在永久链接设置中添加/news/,那么每个自定义帖子类型都会在它之后被破坏。

我尝试将以下内容添加到每个register_post_type

    'with_front'        => false,

但这无济于事。

我也试过here的代码:

$post_type = <POST TYPE NAME> # Define your own as a string
$new_slug = <WANTED SLUG> # Define your own as a string

add_filter( 'register_post_type_args', function($args, $post_type)
  if ( 'post_type' == $post_type )
     $args['rewrite'] = array( 'slug' => $new_slug );

  return $args;

, 10, 2 );

不幸的是,这也不起作用。

有什么方法可以在不破坏其他帖子类型的情况下添加/news/

这是我的自定义帖子类型的当前代码:

add_action( 'init', 'cpt_custom' );
function cpt_custom() 
    register_post_type( 'custom',
        array(
        'rewrite'           => array( 'slug' => 'custom' ),
        'hierarchical'      => true,
        'public'            => true,
        'has_archive'       => true,
        'show_in_rest'      => true,
        'with_front'        => true,
        )
    );

在永久链接设置中,它设置为/news/%postname%/

【问题讨论】:

【参考方案1】:

您可以通过添加以下内容来重写自定义 post-type slug:

'rewrite' => array( 'slug' => 'news' ),

到您的自定义帖子类型参数。 所有帖子现在都将具有“新闻”固定链接,而不会影响其他帖子。

【讨论】:

谢谢!但是我已经为自定义帖子类型使用了 rewrite 参数。我想将/news/ 部分添加到内置帖子中 哦,我明白了,是的,如果您先重写自定义帖子类型的结构,然后更改 Post 的 Wordpress 永久链接设置中的永久链接值 - 它应该可以工作 我也是这么想的,但不是:-( 您能否提供您的永久链接设置的屏幕截图? 谢谢。好的,在您的函数中,注册帖子类型的参数,删除“with_front”引用,以便默认为 true 并且您是否将 has_archive 设置为 true?【参考方案2】:

我找到了答案。您必须在rewrite 中添加with_front 属性。

像这样:

'rewrite' => array( 'slug' => 'custom', 'with_front' => false ),

【讨论】:

以上是关于WordPress:添加目录以发布具有功能的 slug的主要内容,如果未能解决你的问题,请参考以下文章

子目录中的 Wordpress 站点,注销功能失败

具有多个 wordpress 博客的 Apache 虚拟主机

杨泽业:wordpress博客开发技巧之添加快递查询功能

如何将静态页面添加到WordPress?

SQL查询以提取所有具有类别的WordPress帖子

Wordpress 自定义 SQL 以获取三个具有给定元值的帖子