web-dev-qa-db-fra.com

Options de l'écran d'administration sur 1 colonne - déplacez submitdiv en bas

J'utilise ce code.

add_filter('meta-box-order_post','one_column_for_all');
function one_column_for_all($result, $option, $user){
    $result['normal'] = 'postexcerpt,formatdiv,trackbacksdiv,tagsdiv-post_tag,categorydiv,postimagediv,postcustom,commentstatusdiv,slugdiv,authordiv,submitdiv';
    $result['side'] = '';
    $result['advanced'] = '';
    return $result;
}

Ma submitdiv apparaît toujours au milieu au lieu du bas. Quelqu'un peut-il m'aider à le déplacer vers le bas?

Remarque: j'ai également des métaboxes personnalisées ajoutées par certains plugins. Donc, je veux déplacer la submitdiv tout en bas de la page

1
Giri

Essayez quelque chose comme ça:

// First make all metaboxes have 'normal' context (note the absence of 'submitdiv')
// If you know the ids of the metaboxes, you could add them here and skip the next function altogether
add_filter('get_user_option_meta-box-order_post', 'one_column_for_all', 10, 1);
function one_column_for_all($option) {
    $result['normal'] = 'postexcerpt,formatdiv,trackbacksdiv,tagsdiv-post_tag,categorydiv,postimagediv,postcustom,commentstatusdiv,slugdiv,authordiv';
    $result['side'] = '';
    $result['advanced'] = '';
    return $result;
}

// Then we add 'submitdiv' on the bottom, by creating this filter with a low priority
// It feels a bit like overkill, because it assumes other plug-ins might be using the same filter, but still...
add_filter('get_user_option_meta-box-order_post','submitdiv_at_bottom', 999, 1);
function submitdiv_at_bottom($result){
    $result['normal'] .= ',submitdiv';
    return $result;
}

Et puisque vous forcez le contenu dans une colonne, vous voudrez peut-être en ajouter pour la cohérence de la conception:

// Allow only 1 column option on screen options
add_filter('screen_layout_columns', 'one_column_on_screen_options');
function one_column_on_screen_options($columns) {
    $columns['post'] = 1;
    return $columns;
}

// Ignore user preferences stored in DB, and serve only one column layout    
add_filter('get_user_option_screen_layout_post', 'one_column_layout');
function one_column_layout($option) {
    return 1;
}

Je suppose que vous parlez de messages normaux, ce que je viens de montrer ci-dessus, mais ceux-ci pourraient également être adaptés à d'autres types de messages, je suppose, en utilisant différents filtres.

2
Tomas Buteler