Изменение приоритета главного редактора
Я хочу, чтобы основной редактор записей WordPress отображался ниже некоторых моих метабоксов (созданных с помощью Advanced Custom Fields).
Я знаю о функциях add_meta_box()
и remove_meta_box()
, однако было бы здорово, если бы я мог просто изменить приоритет метабокса редактора без необходимости удалять и добавлять его снова.
Есть идеи?
Редактор жёстко встроен в форму. Он не добавляется через add_meta_box
.
Однако есть хук edit_form_after_title
, который можно использовать для решения этой задачи.
Доказательство концепции:
// используем действие для создания места под метабокс
function add_before_editor($post) {
global $post;
do_meta_boxes('post', 'pre_editor', $post);
}
add_action('edit_form_after_title','add_before_editor');
// добавляем метабокс в созданное место
function test_box() {
add_meta_box(
'generic_box', // id, используется как html атрибут id
__( 'Общий заголовок' ), // заголовок метабокса
'generic_cb', // callback функция, выводит содержимое
'post', // тип записи. Добавляется только к постам
'pre_editor', // контекст, место на экране
'low' // приоритет, расположение в контексте
);
}
function generic_cb($post) {
var_dump($post);
echo 'общее содержимое';
}
add_action( 'add_meta_boxes', 'test_box' );

это бы идеально работало, если бы я использовал свои собственные метабоксы, однако я использую Advanced Custom Fields, у которого нет возможности переместить редактор в другое место. Я собираюсь опубликовать собственный ответ на этот вопрос, ваш ответ помог мне прийти к решению :-)

Чтобы ответить на свой собственный вопрос, сначала объясню, почему ответ @s_ha_dum не сработал в моем случае.
Я использую Advanced Custom Fields для добавления дополнительных метабоксов, которые мне нужно разместить над редактором WordPress.
@s_ha_dum отметил, что редактор WordPress жестко встроен в шаблон, но я заметил, что его можно отключить, удалив поддержку редактора. С учетом этого я отключил поддержку редактора, а затем добавил код редактора в новый метабокс.
И вуаля:
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', // Идентификатор метабокса
'Перемещенный редактор', // Заголовок метабокса
'moved_editor_custom_box', // Функция обратного вызова
$screen // Тип записи
);
}
});
function moved_editor_custom_box( $post ) {
// Используем nonce для проверки безопасности
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( __( 'Количество слов: %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(__('Последнее редактирование: %1$s, %2$s в %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(__('Последнее редактирование: %1$s в %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
}

Я бы внимательно за этим следил. Удаление поддержки редактора может иметь и другие последствия. Я никогда не пробовал удалить его, а затем использовать в другом блоке.

Да, это было опасение, которое я изначально пытался обойти, однако контент все равно сохраняется и выводится... не уверен, с чем еще это может вызвать проблемы.

"...с чем еще это может вызвать проблемы..." — Я тоже не уверен, но возможно, что это может вызвать проблемы где-то еще. Придется глубоко копнуть в ядро и посмотреть, на что влияет эта настройка. Просто предостережение, вот и все.
