Sto cercando disperatamente un modo (in qualche modo) di impostare le "opzioni schermo" predefinite e l'ordine metabox attraverso il file Functions.php. qualcuno ha qualche aiuto che può fornire qui?
Sto cercando disperatamente un modo (in qualche modo) di impostare le "opzioni schermo" predefinite e l'ordine metabox attraverso il file Functions.php. qualcuno ha qualche aiuto che può fornire qui?
Risposte:
Dovrai rimuovere le meta box e aggiungerle nuovamente nell'ordine desiderato.
Per disabilitare le meta box: (personalizza in base alle tue esigenze, guarda l'id metabox nel codice html per sapere quale nome dovresti usare come primo parametro delle funzioni)
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' );
Dopo averli rimossi, è possibile utilizzare la funzione add_meta_box per aggiungerli in nuove posizioni: http://codex.wordpress.org/Function_Reference/add_meta_box . L'ordine delle meta box dipende dall'ordine in cui si chiama la funzione add_meta_box. Ad esempio: con il seguente frammento di codice, la meta-casella dei commenti sarà prima della meta-casella dei campi personalizzati.
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' );
Potresti voler guardare il file wp-admin / edit-form-advanced.php
Devi utilizzare il filtro per gestire _ {$ post_type} _posts_columns. Ad esempio: il frammento seguente rimuoverà la colonna dei commenti.
function my_remove_columns( $posts_columns ) {
unset( $posts_columns['comments'] );
return $posts_columns;
}
add_filter( 'manage_post_posts_columns', 'my_remove_columns' );
Utilizza i filtri 'edit _ {$ post_type} _per_page' e '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' );
Per scegliere come target un tipo di post specifico:
usare add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );ad es. add_filter( 'edit_post_per_page', 'my_edit_post_per_page' );per post, add_filter( 'edit_page_per_page', 'my_edit_post_per_page' );per pagine.
o usa una condizione all'interno della tua funzione. per esempio:
funzione 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;Nel seguente esempio, sostituire {CPT}con il nome del tipo postale, come post, page, book, event, imaginary, foobar... Quindi, se si dispone di un tipo di messaggio di nome event, si avrebbe bisogno di aggiungere un filtro per 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, puoi anche avere sideeadvanced{CPT}nomenclatura; per chiarire, se si dispone di un tipo di post denominato event, è necessario aggiungere un filtro per get_user_option_meta-box-order_event.