私はこの投稿の種類を作成しましたが、[公開]ボタンをクリックするとメッセージが表示されます。
この投稿を編集することはできません。
誰かがこのカスタムタイプの投稿を公開できないようにするために、コード内で何か間違ったことをしましたか?これがコードです:
<?php
function image_post_type(){
$labels = array(
'name' => 'Images',
'singlular_name' => 'Image',
'add_new' => 'Add New',
'add_new_item' => 'Add New Image',
'edit_item' => 'Edit Image',
'new_item' => 'New Image',
'all_items' => 'All Images',
'view_item' => 'View Image',
'search_items' => 'Search Images',
'not_found' => 'No Images found',
'not_found_in_trash'=> 'No Images found in Trash',
'parent_item_colon' => '',
'menu_name' => 'Images'
);
$args = array(
'labels' => $labels,
'public' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'show_in_menu' => true,
'menu_position' => 1,
//'menu_icon' => 'icon32',
'capability_type' => 'post',
'map_meta_cap' => false,
'hierarchical' => false,
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
'register_meta_box_cb' => 'add_meta_box_callback',
'has_archive' => true,
'query_var' => true,
'can_export' => true
);
register_post_type('image_post', $args);
}
add_action('init', 'image_post_type');
function add_meta_box_callback(){
add_meta_box('image_variations', 'Image Variations', 'image_variations_callback', 'image_post', 'side', 'low');
}
function image_variations_callback(){
}
function add_image_post_type_to_query($query){
if(is_home() && $query->is_main_query()){
$query->set( 'post_type', array('post', 'page', 'image_post') );
}
return $query;
}
?>
前もって感謝します
map_meta_cap
のデフォルトは、実際にはnotfalseです。 post
またはpage
のcapability_type
も渡しているのであれば、それはあなたです。
次のコードは Wordpress Coreのpost.php にあります。
// Back compat with quirky handling in version 3.0. #14122
if ( empty( $args->capabilities ) && null === $args->map_meta_cap && in_array( $args->capability_type, array( 'post', 'page' ) ) )
$args->map_meta_cap = true;
したがって、明示的にfalseに設定することで、post
またはpage
の機能を使用しないように指示していました。
まったく設定しないことで、上記のコードでtrueに設定できるようになりました。
数行下のコード 、 、 get_post_type_capabilities では、このフラグを使用します。あなたが探している許可をあなたに与えるデフォルトの投稿機能を使用しないこと。
CPTは現在機能しています。なぜそれがうまくいっているのか私にはわからないが、それはそうであり、これが私がそれをうまく始めさせるために起こったことである。 @ hawkidokiの「答え」と、彼が変数を使用していない方法を見たので、同じように見て私のフォーマットを変更して実行し、map_meta_capをコメントアウトするまで機能しませんでした。
<?php
function image_post_type(){
register_post_type('image_post', array(
'labels' => array(
'name' => 'Images',
'singlular_name' => 'Image',
'add_new' => 'Add New',
'add_new_item' => 'Add New Image',
'edit_item' => 'Edit Image',
'new_item' => 'New Image',
'all_items' => 'All Images',
'view_item' => 'View Image',
'search_items' => 'Search Images',
'not_found' => 'No Images found',
'not_found_in_trash'=> 'No Images found in Trash',
'parent_item_colon' => '',
'menu_name' => 'Images'
),
'public' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'show_in_menu' => true,
'menu_position' => 1,
//'menu_icon' => 'icon32',
'capability_type' => 'post',
//'map_meta_cap' => false,
'hierarchical' => false,
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
'register_meta_box_cb' => 'add_meta_box_callback',
'has_archive' => true,
'query_var' => true,
'can_export' => true
)
);
}
add_action('init', 'image_post_type');
function add_meta_box_callback(){
add_meta_box('image_variations', 'Image Variations', 'image_variations_callback', 'image_post', 'side', 'low');
}
function image_variations_callback(){
}
function add_image_post_type_to_query($query){
if(is_home() && $query->is_main_query()){
$query->set( 'post_type', array('post', 'page', 'image_post') );
}
return $query;
}
?>
これを見て、私は同じ "あなたは許可されていません"というメッセージを得るために私の古いコードとコメントアウトされていないmap_meta_capに戻りました。それはうまく動作しますが、私の最終的な作業コードは次のとおりですが、もう一度コメントアウトすると:
<?php
function image_post_type(){
$labels = array(
'name' => 'Images',
'singlular_name' => 'Image',
'add_new' => 'Add New',
'add_new_item' => 'Add New Image',
'edit_item' => 'Edit Image',
'new_item' => 'New Image',
'all_items' => 'All Images',
'view_item' => 'View Image',
'search_items' => 'Search Images',
'not_found' => 'No Images found',
'not_found_in_trash'=> 'No Images found in Trash',
'parent_item_colon' => '',
'menu_name' => 'Images'
);
$args = array(
'labels' => $labels,
'public' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'show_in_menu' => true,
'menu_position' => 1,
//'menu_icon' => 'icon32',
'capability_type' => 'post',
//'map_meta_cap' => false,
'hierarchical' => false,
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
'register_meta_box_cb' => 'add_meta_box_callback',
'has_archive' => true,
'query_var' => true,
'can_export' => true
);
register_post_type('image_post', $args);
}
add_action('init', 'image_post_type');
function add_meta_box_callback(){
add_meta_box('image_variations', 'Image Variations', 'image_variations_callback', 'image_post', 'side', 'low');
}
function image_variations_callback(){
}
function add_image_post_type_to_query($query){
if(is_home() && $query->is_main_query()){
$query->set( 'post_type', array('post', 'page', 'image_post') );
}
return $query;
}
?>
なぜだ? falseに設定されている場合、map_meta_capがどのようにこの問題を引き起こす可能性がありますか?デフォルト値はFalseです。
すべての助けてくれてありがとう、特にあなた@vancoder!