Cum să modifici prioritatea editorului principal în WordPress
Vreau ca editorul principal de postări WordPress să apară sub unele dintre casetele mele meta (generate de Advanced Custom Fields).
Știu că există funcțiile add_meta_box()
și remove_meta_box()
, dar ar fi minunat dacă aș putea modifica pur și simplu prioritatea casetei meta a editorului fără a fi nevoie să o elimin și să o adaug din nou.
Idei?

Editorul este hard-codat în formular. Nu este inserat prin add_meta_box
.
Există un hook numit edit_form_after_title
pe care ar trebui să îl poți folosi.
Dovadă de concept:
// folosește acțiunea pentru a crea un loc pentru meta box-ul tău
function add_before_editor($post) {
global $post;
do_meta_boxes('post', 'pre_editor', $post);
}
add_action('edit_form_after_title','add_before_editor');
// adaugă un box în locația creată
function test_box() {
add_meta_box(
'generic_box', // id, folosit ca atribut html id
__( 'Titlu Generic' ), // titlul meta box-ului
'generic_cb', // funcția callback, afișează conținutul
'post', // tipul de postare sau pagină. Se adaugă doar la postări
'pre_editor', // context, unde pe ecran
'low' // prioritate, unde ar trebui să fie plasat în context
);
}
function generic_cb($post) {
var_dump($post);
echo 'conținut generic';
}
add_action( 'add_meta_boxes', 'test_box' );

deci asta ar funcționa perfect dacă aș folosi propriile mele cutii meta personalizate, însă eu folosesc Advanced Custom Fields, care nu are o opțiune de a muta caseta editorului în altă parte. Sunt pe punctul de a posta propriul meu răspuns la această întrebare, răspunsul tău m-a ajutat să ajung acolo :-)

Pentru a răspunde la propria mea întrebare, voi explica mai întâi de ce răspunsul lui @s_ha_dum nu funcționează pentru mine.
Folosesc Advanced Custom Fields pentru a adăuga cutii meta suplimentare, cele pe care am nevoie să apară deasupra editorului WordPress.
@s_ha_dum a menționat că editorul WordPress este hardcodat în template, dar am observat că poate fi dezactivat prin eliminarea suportului pentru editor. Cu aceasta în minte, am dezactivat suportul pentru editor, apoi am adăugat codul pentru editor într-o nouă cutie meta.
Și iată:
add_action('init', function () {
remove_post_type_support('post', 'editor');
});
add_action('add_meta_boxes', function () {
$screens = array('post');
foreach ($screens as $screen) {
add_meta_box(
'moved_editor',
'Editor Mutat',
'moved_editor_custom_box',
$screen
);
}
});
function moved_editor_custom_box( $post ) {
// Folosește nonce pentru verificare
wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_noncename' );
?>
<style>
#moved_editor {
border: none;
}
#moved_editor h3 {
display: none;
}
#moved_editor .inside {
padding: 0;
}
</style>
<div id="postdivrich" class="postarea">
<?php wp_editor($post->post_content, 'content', array('dfw' => true, 'tabfocus_elements' => 'sample-permalink,post-preview', 'editor_height' => 360) ); ?>
<table id="post-status-info" cellspacing="0">
<tbody>
<tr>
<td id="wp-word-count"><?php printf( __( 'Număr de cuvinte: %s' ), '<span class="word-count">0</span>' ); ?></td>
<td class="autosave-info">
<span class="autosave-message"> </span>
<?php if ( 'auto-draft' != $post->post_status ) : ?>
<span id="last-edit">'
<?php if ( $last_id = get_post_meta($post_ID, '_edit_last', true) ) : ?>
<?php
$last_user = get_userdata($last_id);
printf(__('Ultima editare de %1$s pe %2$s la %3$s'), esc_html( $last_user->display_name ), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified));
?>
<?php else : ?>
<?php printf(__('Ultima editare pe %1$s la %2$s'), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); ?>
<?php endif; ?>
</span>
<?php endif; ?>
</td>
</tr>
</tbody>
</table>
</div>
<?php
}

Aș urmări acest lucru cu atenție. Pot exista alte consecințe la eliminarea suportului pentru editor. Niciodată nu am încercat să îl elimin și apoi să îl folosesc în altă cutie.

Da, aceasta a fost o preocupare pe care am încercat să o ocolesc de la început, totuși se pare că încă salvează și afișează conținutul... nu sunt sigur cu ce altceva ar putea cauza probleme.

"...cu ce altceva ar putea cauza probleme..." - Nici eu nu sunt sigur, dar este posibil să creeze o problemă undeva. Ar trebui să cercetez în profunzime Core-ul și să văd ce efecte are această setare. Doar o poveste de precauție, atât.
