Как использовать пользовательское мета-поле вместо заголовка CPT в URL-адресе сообщения? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть пользовательский тип сообщения, который не использует встроенную поддержку WP (например, «заголовок», «редактор», «автор», «эскиз», «отрывок», «комментарии»). Вместо этого я использую свои собственные метабоксы для публикации CPT. Теперь после создания CPT и публикации, когда я нажимаю на View Post, он переходит к URL-адресу, заканчивающемуся auto-draft , а на втором CPT - auto-draft-2 и так далее

http://localhost/movies/auto-draft/

Как вы заметили, по-прежнему выполняется переход к публикации заголовка по умолчанию, а не публикации мета-поля. Как я могу обновить это, чтобы использовать определенный метабокс, такой как $name?

$we_movieMetas = get_post_custom( $post->ID );
$name = isset( $we_movieMetas['name_box'] ) ? esc_attr( $we_movieMetas['name_box'][0] ) : '';
$boxOffice = isset( $we_movieMetas['boxOffice_box'] ) ? esc_attr( $we_movieMetas['boxOffice_box'][0] ) : '';

1 Ответ

0 голосов
/ 24 июня 2019

Вы должны запретить автосохранение с помощью save_post-hook (@see https://developer.wordpress.org/reference/hooks/save_post/).

Прежде всего, вы должны убедиться, что экономия для вашего cpt. Затем вы можете проверить, является ли это автосохранением через wp_is_post_autosave. Также вы можете проверить, является ли ревизия восстанавливаемой (только если она поддерживается cpt) с помощью функции wp_is_post_revision.

Также вы можете отменить регистрацию метабокса сохранения по умолчанию через фрагмент:

function custom_metaboxes(){
/* Remove the publishing metabox */
    remove_meta_box( 'submitdiv', 'your-cpt', 'side' );
...
}
add_action('add_meta_boxes','custom_metaboxes');

Для оригинального окна сохранения загляните в wp-admin / includes / meta-boxes.php и найдите post_submit_meta_box.

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