Umutsuzca varsayılan "ekran seçenekleri" ve metabox sıraları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ı?
Umutsuzca varsayılan "ekran seçenekleri" ve metabox sıraları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ı?
Yanıtlar:
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. Örn: 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. Örn: aşağıdaki kod parçası, yorumlar 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' );
örneğin sayfalar add_filter( 'edit_post_per_page', 'my_edit_post_per_page' );
için yazılar için kullanın 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, yerini {CPT}
sonrası tipi adıyla gibi post
, page
, book
, event
, imaginary
, foobar
... adında bir post türü var Yani eğer event
, sizin için bir filtre eklemeniz gerekir 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
, ayrıca olabilir side
veadvanced
{CPT}
İsimlendirme ile biraz kafam karıştı ; açıklığa kavuşturmak için adında bir yayın türünüz event
varsa, bunun için bir filtre eklemeniz gerekir get_user_option_meta-box-order_event
.