Intereting Posts
Установка index.php как статической домашней страницы без сообщений? Динамическая таблица стилей загружается, но не заканчивается Изменить категорию миниатюр в зависимости от категории Варианты вариаций для WooCommerce – как объединить атрибуты? Получить изображение автора для сообщений в цикле на странице сообщений специального типа форма не генерирует запрос $ _POST Добавление тега закрытия короткого кода после цикла Как удалить сообщения WordPress более ста лет, чем 400 дней, из категории WordPress Как сортировать термины с диакритическими знаками? Как получить количество сообщений в той же категории, что и текущая публикация? Отменить jQuery 'noConflict' – это действительно небезопасно? Добавление функции в функцию child.php дочерней темы wordpress nav menu с помощью twitter bootstrap Создание отдельных каналов для пользовательских типов сообщений Только изображение пользователя Загрузить изображение Http Error

Metabox не отображается в пользовательском типе сообщения

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

Не работая, я имею в виду, я вообще не показываюсь в WP UI.

Вот код:

<?php function add_post_type($name, $args = array()) { add_action('init', function() use($name, $args) { $upper = ucwords($name); $name = strtolower(str_replace(' ','_',$name)); $args = array_merge( array( 'public'=> true, 'label' => "All $upper" . 's', 'labels' => array('add_new_item' => "Add New $upper"), 'support' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments', 'custom-fields'), 'taxonomies' => array('post_tag','category') ), $args ); register_post_type('$name', $args); }); } //now we create and register a taxonomy function add_taxonomy($name, $post_type, $args = array()) { $name = strtolower($name); add_action('init', function() use($name, $post_type, $args) { $args = array_merge( array( 'label' => ucwords($name), ), $args ); register_taxonomy($name, $post_type, $args); }); } /************************************************************ Now we add the names of the custom post type and taxonomies *************************************************************/ add_post_type('snippet', array( 'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments', 'custom-fields'), 'taxonomies' => array('post_tag') )); add_taxonomy('language', 'snippet'); /************************************************************ Creating Metaboxes *************************************************************/ add_action('add_meta_boxes', function() { add_meta_box( 'er_snippet_info', 'Snippet Info', 'er_snippet_info_cb', 'snippet', 'normal', 'high' ); }); function er_snippet_info_cb() { global $post; $url = get_post_custom($post->ID); ?> <label for="er_associated_url">Associated URL: </label> <input type="text" name="er_associated_url" id="er_associated_url" value="<?php echo $url; ?>" /> <?php } add_action('save_post', function () { global $post; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return; //security check if ($_POST && !wp_verify_nonce($_POST['er_nonce'], _FILE_)) { if ( isset ($_POST['er_associated_url']) ) { update_post_meta($post->ID, 'er_associated_url', $_POST['er_associated_url']); } } }); ?> 

Другая проблема заключается в том, что тег не назван, даже если функция существует.

Пользовательский тип сообщения регистрируется как name , а не snippet который вызывается в действии add_meta_boxes . Это связано с тем, что PHP var передается внутри одинарных кавычек и не интерпретируется.

Измените это:

 register_post_type('$name', $args); 

Для того, чтобы:

 register_post_type($name, $args); 

Это также работает:

 register_post_type("$name", $args); 

Но никогда не передавайте переменные PHP внутри одинарных кавычек, если хотите, чтобы они были интерпретированы.

Кроме того, рекомендуется использовать add_action('add_meta_boxes_{post-type}', 'callback') для создания менее ненужных перехватов для других типов сообщений (от codex ).

В коде вы пытаетесь передать функции в качестве параметров в add_action (). Этот синтаксис работает в javascript, но не так хорошо в php. Попробуйте сделать это с передачей имени функции вместо add_action ()

Это может помочь. Это сработало для меня

 function my_plugin_add_meta_box() { $type_name = array('custom_post_type_name'); foreach ( $type_name as $custom_post_type ) { add_meta_box('my_plugin_meta_box_id', __('Meta Box Name'), 'my_plugin_meta_box_callback', $custom_post_type); } } add_action( 'add_meta_boxes', 'my_plugin_add_meta_box' ); 

а затем вы можете добавить поля ввода в функцию my_plugin_meta_box_callback . Надеюсь, это поможет кому-то.

по умолчанию для пользовательских типов сообщений не будет обмена.

Либо вы можете добавить плагин, как ADVANCED CUSTOM FIELD

или вы можете написать код для добавления мета-поля в пользовательские типы сообщений.

Очистить ссылочный сайт:

https://thomasgriffin.io/how-to-automatically-add-meta-boxes-to-custom-post-types/

// посмотрим на эту ссылку

add_meta_box ('meta_id', 'My Custom Meta Box', 'tgm_custom_meta_box_callback', $ post_type, 'normal', 'high');