第一次发布自定义帖子类型时生成的页面名称/插件错误

时间:2019-11-27 作者:Philip

我已设置了自定义帖子类型(CPT),删除了对编辑器的支持:

register_post_type( \'review\', array(
    \'label\' => \'Reviews\',
    \'labels\' => array(
        \'name\' => \'Reviews\',
        /* etc */
    ),
    \'description\' => \'Tour reviews\',
    \'menu_icon\' => \'dashicons-format-chat\',
    \'public\' => true,
    \'supports\' => array(
        \'title\',
        \'revisions\',
        \'author\',
    ),
    \'has_archive\' => false,
    \'show_in_rest\' => true,
    \'rewrite\' => array(\'slug\' => \'reviews\'),
));
(是的,我只使用标题作为内容;))

这很好用!然而

当我添加这种类型的新帖子时,自动生成的permalink会使用另一个帖子类型的标题,而不是使用添加的帖子类型的标题。

因此,它产生:

/reviews/title-of-the-last-post-of-another-post-type/

而不是:

/reviews/newly-added-post-of-this-post-type/

奇怪的是;“审查”;part是正确的,但page_name 部分不是。

这是一个bug还是我遗漏了什么

注意:如果我添加对editorregister_post_type 呼叫,此问题不会发生。但我不想为这种帖子类型启用编辑器。

NB2:首次发布后,如果我手动清空permalink的编辑字段并单击;更新“;,正确的slug/page_name 已生成。

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

正如维托·阿尔梅达建议的那样,我在WP(v5.3)的空白安装中尝试了这一点,只安装了默认插件和我的主题。在这种设置下,一切正常,这是应该的。似乎下面的一个插件通过提供slug来搞乱sluginput 创建新帖子时,字段具有默认(错误)值,而不是将其留空:

Yoast SEO Premium WP Rocket ShortPixel Image Optimizer(短像素图像优化器)联系人表单7(GDPR Cookie Approvement)(GDPR Cookie同意书)Instagram Feed Pro开发者(Instagram Feed Pro开发者)的解决方案(解决方案)在加载时和发布/更新之前,我使用了一个内联jQuery脚本清空slug输入字段,确保处理帖子的WP脚本根据标题生成slug。有点凌乱,但它起作用了。

SO网友:Vitor Almeida

注册或更新任何帖子/自定义帖子类型的任何重写时,您需要通过管理面板或通过代码刷新重写规则:

register_activation_hook( __FILE__, \'plugin_activation\' );
function plugin_activation() {
    update_option(\'plugin_permalinks_flushed\', 0);
}

add_action( \'init\', \'register_custom_post_type\' );
function register_custom_post_type() {
    global $wp;
    register_post_type( \'review\', array(
        \'label\' => \'Reviews\',
        \'labels\' => array(
        \'name\' => \'Reviews\',
            /* etc */
        ),
        \'description\' => \'Tour reviews\',
        \'menu_icon\' => \'dashicons-format-chat\',
        \'public\' => true,
        \'supports\' => array(
            \'title\',
            \'revisions\',
            \'author\',
        ),
        \'has_archive\' => false,
        \'show_in_rest\' => true,
        \'rewrite\' => array(\'slug\' => \'reviews\'),
    ));

    if( !get_option(\'plugin_permalinks_flushed\') ) {

        flush_rewrite_rules(false);
        update_option(\'plugin_permalinks_flushed\', 1);

    }
}

https://developer.wordpress.org/reference/functions/flush_rewrite_rules/

相关推荐

List posts with slug title

代码用于single-product.php. 我可以在页面上列出所有产品,但我想列出所有带有slug标题的帖子。<?php $args= array( \'post_type\' => \'products\', \'order_by\' => \'date\', \'posts_per_page\' => -1, \'post__not_in\' => array( get_