カスタム投稿ステータスが公開されているはずですが、編集画面の[all]リストには表示されません。
これは私が投稿ステータスを登録する方法です:
register_post_status('my_custom_post_status', array(
'label' => __('The Label', 'domain'),
'public' => true,
'exclude_from_search' => true,
'show_in_admin_all_list' => false,
'label_count' => //blablabla
));
show_in_admin_all_list = false
はall-listのステータスを隠すべきですが、それは隠しません。パブリックをfalseに設定した場合にのみ表示されません。しかし、私はpublic = true
が必要です!
何か案は
コーデックス: http://codex.wordpress.org/Function_Reference/register_post_status
これは私の問題を解決します:
register_post_status('my_custom_post_status', array(
'label' => __('The Label', 'domain'),
'public' => !is_admin(),
'exclude_from_search' => true,
'show_in_admin_all_list' => false,
'label_count' => //blablabla
));
!is_admin()
はフロントページでのみステータスを公開します。
より良い解決策が見つかった場合は、こちらに投稿してください。
これを使用して、公開プレスプラグインを使用してカスタム投稿ステータスを作成し、すべての投稿ステータスをパブリックに変更しました
register_post_status(
$status->slug,
[
'label' => $status->name,
'public' => true,
'exclude_from_search' => true,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'_builtin' => false,
'label_count' => _n_noop("{$status->name} <span class='count'>(%s)</span>","{$status->name} <span class='count'>(%s)</span>"),
]
);
すべての投稿はフロントエンドに表示されますが、edit.phpすべての投稿ページが機能しませんカスタム投稿タイプに関連するすべての投稿を表示せず、woocommerceにも影響します
@revaxartsに触発された私のアプローチはこれです。
if (is_admin() && $_GET['post_type'] == 'post') {
$makepublic = true;
} else {
$makepublic = false;
}
register_post_status( 'suspended', array(
'label' => _x( 'suspended', 'Status General Name', 'myadvert' ),
'public' => $makepublic,
'exclude_from_search' => true,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Suspended <span class="count">(%s)</span>', 'Suspended <span class="count">(%s)</span>' )
) );
Adminとしてログインしている間はフロントエンドでそれらの投稿を見たくないからです。
投稿をより細かく制御したいためにpublic
パラメータを変更したくない場合は、pre_get_posts
アクションをフックしてメインクエリを変更する必要があります。
/**
* Display all posts on edit.php
* Bug fix: the 'show_in_admin_all_list' argument for the 'register_post_status' function is ignored when the argument 'public' is set to 'false'
* @link https://core.trac.wordpress.org/ticket/24415
*/
add_action('pre_get_posts', function($query) {
global $pagenow;
if (!is_admin() || $query->query['post_type'] != 'YOUR_CPT' || $pagenow != 'edit.php') {
return;
}
if (!isset($_GET['post_status']) || empty($_GET['post_status']) || (isset($_GET['post_status']) && $_GET['post_status'] == 'all')) {
$query->set( 'post_status', array('publish', 'draft', 'foo', 'bar'));
}
});