Intereting Posts
Загрузите url с минимальными / отсутствующими запросами DB активная ссылка для последнего сообщения на вертикальных вкладках Расширенные пользовательские поля и анализ ключевых слов SEO Yoast Как я могу получить кого-то для проверки, как только они добавят продукт в корзину? Установка WordPress с сайта live на localhost Общий тип пользовательских сообщений между сетевыми сайтами WP Проблема с плагином уведомления о комментариях Ошибка обновления – не удалось открыть поток: неверный аргумент Структура архива продукта Alter Woocommerce Как конвертировать сообщения в сообщения пользовательского типа? Проблема с изображениями, когда в URL-адресе нет значения Как использовать запрос update и delete в wordpress Два плагина, имеющие одну и ту же пользовательскую регистрацию типа сообщения Добавление настраиваемого url для ссылки readmore с помощью get_permalink () Используйте delete_category, delete_term или какое действие при удалении термина категории?

Пользовательские поля для настраиваемого типа сообщений

Я создаю плагин и не могу понять, как добавлять настраиваемые поля, например, в WooCommerce – выбирает, вводит, текстовые поля и т. Д.

Я говорю не о WP Custom fields. Я зарегистрировал собственный тип сообщения с функцией register_post_type с аргументами:

 'capability_type' => 'post', 'supports' => array( 'title', 'custom-fields' ) 

И теперь у меня есть только Custom fields Title и Custom fields . Как я могу добавить некоторые пользовательские входы / select / radiobuttons для Edit %custom_post_type% страницы Edit %custom_post_type% ?

Вам нужно добавить свой собственный метаболизм для созданного настраиваемого типа сообщений. Вы можете использовать действие add_meta_boxes_{cpt_slug}

 add_action( 'add_meta_boxes_' . $cpt_public_slug, 'adding_custom_meta_boxes' ); add_action( 'save_post', 'save_metabox' , 10, 2 ); function adding_custom_meta_boxes(){ global $cpt_public_slug; add_meta_box( 'plugin-site', __( 'Website', 'text_domain' ), 'cpt_form_site_Render', $cpt_public_slug, 'normal', 'high' ); } function cpt_form_site_Render(){ global $post; $post_meta = get_post_meta($post->ID); // render the input field ?> <input type="text" name="meta_key" value="<?php echo $post_meta['meta_value'][0]; ?>"/> <?php // do it for all your metas } function save_metabox($post_id, $post){ foreach ($_POST as $the_posted_key=>$the_posted_value) { if (strpos($the_posted_key, brozzme_passport_config::$custom_fields_prefix)!==false) { update_post_meta($post_id, $the_posted_key, $the_posted_value); } } } 

Используйте плагин Advanced Custom Fields, чтобы добавить дополнительные поля в свой пользовательский тип публикации. Он бесплатный в каталоге плагинов и содержит множество примеров на веб-сайте.

Страница плагина: https://wordpress.org/plugins/advanced-custom-fields/

Веб-сайт: https://www.advancedcustomfields.com/

есть рабочий пример. Я использовал его для создания пользовательских метабокс bbpress

 $cpt_public_slug = 'topic'; add_action( 'add_meta_boxes_' . $cpt_public_slug, 'adding_custom_meta_boxes' ); add_action( 'save_post', 'save_metabox' , 10, 2 ); add_action( 'publish_'.$cpt_public_slug, 'save_metabox' , 10, 2 ); function adding_custom_meta_boxes(){ global $cpt_public_slug; add_meta_box('topictimeout', 'Time', 'cpt_form_site_Render', $cpt_public_slug, 'side', 'high'); } function cpt_form_site_Render(){ global $post; $post_meta = get_post_meta($post->ID); // put here input or textarea } function save_metabox($post_id, $post){ global $post; // when first publish and then save if( isset( $_POST['save'] ) || isset( $_POST['publish'] ) ) { // you will need to use a $_POST param and validate before saving $meta_val = isset( $_POST['topictimeout'] ) ? sanitize_text_field( $_POST['topictimeout'] ) : ''; // the $meta_val would be a $_POST param from inner meta box form update_post_meta($post_id, 'topictimeout', $meta_val); } } 

U может поставить туда этот вход, например:

 <input type="text" name="topictimeout" value="<?=$post_meta['topictimeout'][0]; ?>"/> in minutes