Setarea opțiunilor implicite pentru ecranul de administrare și ordinea metabox-urilor
Caut cu disperare o modalitate (orice modalitate) de a seta opțiunile implicite pentru "screen options" și ordinea metabox-urilor prin intermediul fișierului functions.php. Poate cineva să ofere ajutor în această privință?

Configurarea ordinii casetelor meta pe paginile de editare a articolelor
Va trebui să eliminați casetele meta și să le adăugați din nou în ordinea dorită.
Pentru a dezactiva casetele meta: (personalizați după nevoile dumneavoastră, uitați-vă la id-ul metabox-ului în codul html pentru a ști ce nume să folosiți ca prim parametru al funcțiilor)
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' );
După ce le-ați eliminat, puteți folosi funcția add_meta_box pentru a le adăuga în poziții noi: http://codex.wordpress.org/Function_Reference/add_meta_box. Ordinea casetelor meta depinde de ordinea în care apelați funcția add_meta_box. De exemplu: cu următorul fragment de cod, caseta meta pentru comentarii va fi înaintea celei pentru câmpuri personalizate.
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' );
Ați putea dori să analizați fișierul wp-admin/edit-form-advanced.php
Configurarea coloanelor afișate pe pagina de listare a articolelor
Trebuie să utilizați filtrul manage_{$post_type}_posts_columns. De exemplu: următorul fragment va elimina coloana pentru comentarii.
function my_remove_columns( $posts_columns ) {
unset( $posts_columns['comments'] );
return $posts_columns;
}
add_filter( 'manage_post_posts_columns', 'my_remove_columns' );
Configurarea rezultatelor implicite afișate pe pagina de listare a articolelor
Utilizați filtrele 'edit_{$post_type}_per_page' și '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' );
Pentru a ținti un anumit tip de postare:
folosiți
add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );
de exempluadd_filter( 'edit_post_per_page', 'my_edit_post_per_page' );
pentru articole,add_filter( 'edit_page_per_page', 'my_edit_post_per_page' );
pentru pagini.sau utilizați o condiție în cadrul funcției dumneavoastră. de exemplu:
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;

Scuze, poate nu m-am exprimat corect. Mă refeream la cutiile meta de pe pagina de editare a postării în zona de administrare, precum și la setarea numărului implicit de postări de afișat pe pagina listei de postări din administrare.

deci tehnic vorbind, aceasta nu este o întrebare, ci de fapt 2 întrebări?

Am modificat răspunsul meu. Spune-mi dacă ai nevoie de mai multe detalii.

@sorich87 mulțumesc pentru răspuns, însă din câte îmi amintesc nu exista nicio modalitate de a specifica ordinea exactă a fiecărui metabox sau exista? Poate ar trebui să fiu un pic mai specific. În esență, caut diverse fragmente de cod care să-mi permită să presetez diverse opțiuni pentru toți utilizatorii fără a fi nevoie să mă loghez în fiecare cont. Exemple: setarea ordinii exacte a meta box-urilor pe paginile de editare a postărilor, setarea coloanelor de titlu care apar pe pagina de listare a postărilor, setarea rezultatelor implicite afișate pe pagina de listare a postărilor... lucruri de genul acesta. Mulțumesc anticipat.

Mulțumesc pentru răspuns. Tocmai am încercat să utilizez codul furnizat pentru setarea numărului implicit de postări în lista de postări din administrare, însă nu pare să funcționeze. Trebuie făcut ceva specific dacă încerci să modifici numărul implicit de rezultate pentru un anumit tip de postare? Dacă da, există o modalitate de a-l seta pentru toate paginile de listare a postărilor?

Ne pare rău, a apărut o eroare în cod. L-am modificat. Vei observa parametrul $post_type care îți permite să ții cont de un anumit tip de postare.

@sorich87 codul tău funcționează, dar acum dacă un utilizator schimbă opțiunile ecranului pentru a afișa o valoare diferită, pagina arată doar valoarea introdusă prin fișierul functions. Ceea ce căutam eu era o modalitate de a seta opțiunile implicite, dar dacă utilizatorul schimbă manual opțiunile ecranului, să se afișeze opțiunea setată de utilizator.

@sorich87 de asemenea... cum aș putea seta opțiunile doar pentru un anumit tip de postare, fără a afecta celelalte?

@sorich87 ai putea, te rog, să oferi un exemplu de setare a valorilor doar pentru două tipuri de postări personalizate. Poate fac ceva greșit

încă un exemplu, te rog. Să presupunem că ai 5 tipuri de postări personalizate. Acum, să zicem că pentru post_type1 vrei să setezi valoarea la 5 postări, pentru post_type2 să setezi valoarea la 2 postări, iar pentru oricare altele să ai o valoare implicită de 10. Ai putea arăta cum ar arăta acest cod? De asemenea, există o opțiune prin care acestea să fie doar valori implicite, cu excepția cazului în care utilizatorul setează manual valoarea el însuși. Dacă da, atunci cum am putea forța o valoare astfel încât utilizatorul să nu o poată schimba? În final, când selectezi "opțiuni ecran", acea valoare nu se actualizează/reflectă valoarea care este afișată de fapt.

Pentru cei care încercă să reordonare cutiile meta, acest răspuns nu mai este cea mai bună abordare. Vezi răspunsul lui Nabil.

În exemplul următor, înlocuiți {CPT}
cu numele tipului de postare, cum ar fi post
, page
, book
, event
, imaginary
, foobar
... De exemplu, dacă aveți un tip de postare numit event
, va trebui să adăugați un filtru pentru 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 Aranjați aici după preferințe
'customdiv-{CPT}',
'authordiv',
'slugdiv',
)
),
);
}
Note:
- Pe lângă
normal
, puteți avea șiside
șiadvanced
- Valorile sunt ID-uri de div-uri separate prin virgulă, pe care le puteți obține vizualizând codul sursă al paginii sau puteți încerca să le ghiciți
- Orice metabox care există dar nu este inclus în ordinea personalizată va fi adăugat automat la sfârșitul listei dumneavoastră.

Există un plugin care combină aceste fragmente de cod astfel încât un administrator să poată forța pozițiile cutiilor meta pentru toți utilizatorii fără a fi nevoie de codare?
Indiferent dacă este considerată o practică bună sau nu, atunci când oferi asistență unor utilizatori mai puțin sofisticați, ajută foarte mult să știi ce văd ei și unde se află pe ecranul lor. Forțarea poziției cutiilor meta în aceeași locație pentru toți utilizatorii poate fi benefică în anumite cazuri.
În mod ideal, utilizatorii cu rolul de administrator ar putea să-și repoziționeze cutiile meta, dar abonații și contributorii ar putea beneficia de afișarea tuturor cutiilor meta în aceleași poziții.
Există un astfel de plugin? Nu reușesc să găsesc unul.
Acest plugin ar putea fi o opțiune, deoarece previne utilizatorii să mute cutiile meta, dar nu a fost actualizat de un deceniu. https://wordpress.org/plugins/unsortable-meta-box/

Dacă ai o întrebare nouă, te rugăm să o adaugi făcând clic pe butonul Adaugă Întrebare. Include o legătură către această întrebare dacă ajută la oferirea de context. - Din Recenzie
