Umutsuzca varsayılan "ekran seçenekleri" ve metabox sıralamasını işlev.php dosyası aracılığıyla ayarlamak için bir yol (herhangi bir şekilde) arıyorum. Burada sağlayabilecekleri yardımı olan var mı?
Meta kutuları kaldırmanız ve tekrar istediğiniz sırayla eklemeniz gerekir.
Meta kutuları devre dışı bırakmak için: (ihtiyaçlarınıza göre özelleştirin, işlevlerin ilk parametresi olarak hangi adı kullanmanız gerektiğini bilmek için html kodundaki meta kutu kimliğine bakın)
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' );
Bunları çıkardıktan sonra, yeni konumlara eklemek için add_meta_box işlevini kullanabilirsiniz: http://codex.wordpress.org/Function_Reference/add_meta_box . Meta kutularının sırası, add_meta_box işlevini çağırdığınız sıraya bağlıdır. E.g .: aşağıdaki kod parçacığında, yorumlar meta kutusu özel alanlar meta kutusundan önce olacaktır.
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 dosyasına bakmak isteyebilirsiniz.
_ ~ $ Post_type} _posts_columns süzgecini yönet kullanmanız gerekir. E.g .: aşağıdaki kod parçası yorum sütununu kaldıracak.
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' ve 'edit_posts_per_page' filtrelerini kullanın.
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' );
Belirli bir yayın türünü hedeflemek için:
add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );
kullanın örneğin; mesajlar için add_filter( 'edit_post_per_page', 'my_edit_post_per_page' );
, sayfalar için add_filter( 'edit_page_per_page', 'my_edit_post_per_page' );
.
veya fonksiyonunuzda bir koşul kullanın. Örneğin.:
işlevi 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;
Aşağıdaki örnekte, {CPT}
yerine post
, page
, book
, event
, imaginary
, foobar
.. gibi post tipiyle değiştirin. Yani event
adında bir post tipi varsa, get_user_option_meta-box-order_event
için bir filtre eklemeniz gerekir.
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
ile birlikte, side
ve advanced
öğelerine de sahip olabilirsiniz.