无法删除具有自定义角色的前端自定义帖子

时间:2019-06-25 作者:Patrick Acioli

叉子!

嗯,我正在开发一个带有自定义帖子类型的插件,我需要创建一个带有表单的前端页面,该表单允许自定义角色(由第三方插件创建)创建和删除我的自定义帖子。但是,我收到不允许删除错误警报。

注册CPT。

register_post_type(\'zonas\',
    array(
        \'labels\'      => array(
            \'name\'          => __(\'Zonas de treino\'),
            \'singular_name\' => __(\'Zona de treino\'),
    ),
        \'public\'      => true,
        \'has_archive\' => true,
        \'rewrite\'     => ["slug" => "zonas"],
        "menu_position" => 120, 
        \'capabilities\' => array(
            \'edit_post\'          => \'edit_zonas\', 
            \'read_post\'          => \'read_zonas\', 
            \'delete_post\'        => \'delete_zonas\', 
            \'edit_posts\'         => \'edit_zonas\', 
            \'edit_others_posts\'  => \'edit_others_zonas\', 
            \'publish_posts\'      => \'publish_zonas\',       
            \'read_private_posts\' => \'read_private_zonas\', 
            \'create_posts\'       => \'edit_zonas\', 
            \'delete_published_posts\' => \'delete_published_zonas\'
        ),
        "menu_icon"     => "dashicons-clock",
        "supports"      => [
            "title"
        ]
    )
);
生成删除链接的函数(与管理员角色配合使用)

function wp_delete_post_link($link = \'Excluir\', $before = \'\', $after = \'\', $post) {    
    $link = "".$link."";
    echo $before . $link . $after;
}

1 个回复
SO网友:Joy Reynolds

看看代码的第63行https://developer.wordpress.org/reference/functions/map_meta_cap/

如果你没有提供一个具体的职位,这是不允许的。

您的代码混合了元功能和基本功能。(你的都是复数或原语)

“元”功能,如“edit\\u post”、“edit\\u user”等,是map\\u Meta\\u cap()用来映射到其他“基本”功能的功能,如“edit\\u posts”、“edit\\u others\\u posts”等。

元功能使用对象将其转换为原语,但如果您不在链接中传递它,如何使用它?

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。