functions.phpファイルでデフォルトの「画面オプション」とメタボックスの順序を設定する何らかの方法(任意の方法)を必死に探しています。ここで提供できる支援はありますか?
functions.phpファイルでデフォルトの「画面オプション」とメタボックスの順序を設定する何らかの方法(任意の方法)を必死に探しています。ここで提供できる支援はありますか?
回答:
メタボックスを削除し、必要な順序で再度追加する必要があります。
メタボックスを無効にするには:(ニーズに合わせてカスタマイズし、htmlコードのメタボックスIDを見て、関数の最初のパラメーターとして使用する名前を確認します)
function my_remove_meta_boxes() {
remove_meta_box('postcustom', 'post', 'core');
remove_meta_box('commentsdiv', 'post', 'core');
...
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );
それらを削除した後、add_meta_box関数を使用して新しい位置に追加できます:http ://codex.wordpress.org/Function_Reference/add_meta_box 。メタボックスの順序は、add_meta_box関数を呼び出す順序によって異なります。たとえば、次のコードスニペットでは、コメントメタボックスはカスタムフィールドメタボックスの前にあります。
function my_add_meta_boxes( $post_type, $post ) {
if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') )
add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', $post_type, 'normal', 'core');
if ( post_type_supports($post_type, 'custom-fields') )
add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', $post_type, 'normal', 'core');
...
}
add_action( 'add_meta_boxes', 'my_add_meta_boxes' );
ファイルwp-admin / edit-form-advanced.phpをご覧ください。
フィルターmanage _ {$ post_type} _posts_columnsを使用する必要があります。たとえば、次のスニペットはコメント列を削除します。
function my_remove_columns( $posts_columns ) {
unset( $posts_columns['comments'] );
return $posts_columns;
}
add_filter( 'manage_post_posts_columns', 'my_remove_columns' );
「edit _ {$ post_type} _per_page」および「edit_posts_per_page」フィルターを使用します。
function my_edit_post_per_page( $per_page, $post_type ) {
$edit_per_page = 'edit_' . $post_type . '_per_page';
$per_page = (int) get_user_option( $edit_per_page );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = 1;
return $per_page;
}
add_filter( 'edit_posts_per_page', 'my_edit_post_per_page' );
特定の投稿タイプをターゲットにするには:
使用add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );
たとえばadd_filter( 'edit_post_per_page', 'my_edit_post_per_page' );
、ポストのためadd_filter( 'edit_page_per_page', 'my_edit_post_per_page' );
のページについて。
または、関数内で条件を使用します。例えば:
function my_edit_post_per_page($ per_page、$ post_type){
if( $post_type == 'post' ) {
$edit_per_page = 'edit_' . $post_type . '_per_page';
$per_page = (int) get_user_option( $edit_per_page );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = 1;
}
return $per_page;
次の例では、置き換え{CPT}
後の型名で、のようなpost
、page
、book
、event
、imaginary
、foobar
名前付きポストタイプを持っている場合...だからevent
、あなたがのためにフィルタを追加する必要がありますget_user_option_meta-box-order_event
。
add_filter( 'get_user_option_meta-box-order_{CPT}', 'metabox_order' );
function metabox_order( $order ) {
return array(
'normal' => join(
",",
array( // vvv Arrange here as you desire
'customdiv-{CPT}',
'authordiv',
'slugdiv',
)
),
);
}
normal
あなたも持つことができますside
し、advanced
{CPT}
命名法に多少混乱しました。明確にするために、という名前の投稿タイプがある場合event
、のフィルタを追加する必要がありますget_user_option_meta-box-order_event
。