通过循环添加的自定义帖子类型之一没有显示在仪表板上



大家好,提前感谢大家,

我使用循环创建了自定义帖子类型,但其中一个不显示在仪表板上。只有Comeleon公告出现,当我从数组$ agents中删除带有Comeleon的行时,没有自定义帖子类型显示。我做错了什么?

<?php
add_action("init", "create_post_type");
function create_post_type(){
$agencies = [
["name" => "comeleon", "label" => "Comeleon"],  
["name" => "samsung", "label" => "Samsung"],  
];
foreach ($agencies as $agency) {
$cptName = $agency["name"]."_annonces";
$label = $agency["label"];
register_post_type(
$cptName,
array(
"labels" => array(
"name" => esc_html($label." annonces", "regina"),
"singular_name" => esc_html($label." annonce", "regina"),
"add_new" => esc_html("Ajouter nouvelle", "regina"),
"add_new_item" => esc_html("Ajouter nouvelle annonce", "regina"),
"edit" => esc_html("Modifier", "regina"),
"edit_item" => esc_html("Modifier annonce", "regina"),
"new_item" => esc_html("Nouvelle annonce", "regina"),
"view" => esc_html("Voir annonce", "regina"),
"view_item" => esc_html("Voir annonce", "regina"),
"search_items" => esc_html("Chercher annonce", "regina"),
"not_found" => esc_html("Aucune annonce trouvée", "regina"),
"not_found_in_trash" => esc_html("Aucune annonce trouvée dans la poubelle", "regina"),
),
"public" => true,
"capability_type" => array($agency["name"]."_annonce", $cptName),
"map_meta_cap" => true,
"hierarchical" => true,
"has_archive" => true,
"supports" => array(
"title",
"editor",
'custom-fields'
)
) );
}
?>

我创建了这些角色:


register_activation_hook(__FILE__, "reg_activation");
function reg_activation()
{
$agencies = [
["name" => "comeleon", "label" => "Comeleon"],
["name" => "samsung", "label" => "Samsung"],
];
$caps = [
"read" => true,
"edit_posts" => true,
"upload_files" => true,
];
foreach ($agencies as $agency) {
add_role("admin_".$agency["name"], "Admin ".$agency["label"], $caps);
add_role("contributor_".$agency["name"], "Contributeur ".$agency["label"], $caps);
}
}
add_action("admin_init", 'reg_add_role_caps', 999);
function reg_add_role_caps (){
$agencies = [
["name" => "comeleon", "label" => "Comeleon"],
["name" => "samsung", "label" => "Samsung"],
];

foreach ($agencies as $agency) {
$cptName = $agency["name"]."_annonces";
// role admin
$roleAdmin = get_role("admin_".$agency["name"]);
if (null === $roleAdmin) {
return;
}
$roleAdmin->add_cap("read");
$roleAdmin->add_cap("read_".$cptName);
$roleAdmin->add_cap("read_private_".$cptName);
$roleAdmin->add_cap("edit_".$cptName);
$roleAdmin->add_cap("edit_others_".$cptName);
$roleAdmin->add_cap("edit_published_".$cptName);
$roleAdmin->add_cap("publish_".$cptName);
$roleAdmin->add_cap("delete_others_".$cptName);
$roleAdmin->add_cap("delete_private_".$cptName);
$roleAdmin->add_cap("delete_published_".$cptName);


// role contributor
$roleContributor = get_role("contributor_".$agency["name"]);
if (null === $roleContributor) {
return;
}
$roleContributor->add_cap("read");
$roleContributor->add_cap("read_".$cptName);
$roleContributor->add_cap("read_private_".$cptName);
$roleContributor->add_cap("edit_".$cptName);              
$roleContributor->add_cap("edit_published_".$cptName);
$roleContributor->add_cap("publish_".$cptName);
$roleContributor->add_cap("delete_private_".$cptName);
$roleContributor->add_cap("delete_published_".$cptName);


}
}    

我可以从他们的仪表板上看到这些自定义的帖子类型,但不能从管理员的仪表板上看到,只有一个:Comeleon公告

改变这一行

"capability_type" => array($agency["name"]."_annonce", $cptName),

"capability_type" => 'post',

完整的代码。

add_action("init", "create_post_type");
function create_post_type(){
$agencies = [
["name" => "comeleon", "label" => "Comeleon"],  
["name" => "samsung", "label" => "Samsung"],  
];
foreach ($agencies as $agency) {
$cptName = $agency["name"]."_annonces";
$label = $agency["label"];
register_post_type(
$cptName,
array(
"labels" => array(
"name" => esc_html($label." annonces", "regina"),
"singular_name" => esc_html($label." annonce", "regina"),
"add_new" => esc_html("Ajouter nouvelle", "regina"),
"add_new_item" => esc_html("Ajouter nouvelle annonce", "regina"),
"edit" => esc_html("Modifier", "regina"),
"edit_item" => esc_html("Modifier annonce", "regina"),
"new_item" => esc_html("Nouvelle annonce", "regina"),
"view" => esc_html("Voir annonce", "regina"),
"view_item" => esc_html("Voir annonce", "regina"),
"search_items" => esc_html("Chercher annonce", "regina"),
"not_found" => esc_html("Aucune annonce trouvée", "regina"),
"not_found_in_trash" => esc_html("Aucune annonce trouvée dans la poubelle", "regina"),
),
"public" => true,
"capability_type" => 'post',
"map_meta_cap" => true,
"hierarchical" => true,
"has_archive" => true,
"supports" => array(
"title",
"editor",
'custom-fields'
)
) 
);
} 
}

最新更新