Как добавить настраиваемые поля в настраиваемый тип сообщения?
-
-
Используйте http://wordpress.org/extend/plugins/types/Use http://wordpress.org/extend/plugins/types/
- 0
- 2012-07-30
- Ajay Patel
-
6 ответ
- голосов
-
- 2011-05-13
Это,вероятно,сложнее,чем вы думаете,я бы рассмотрел возможность использования фреймворка:
Если вы хотите написать свой собственный,вот несколько достойных руководств:
This is probably more complicated than you think, I would look into using a framework:
If you want to write your own , here are some decent tutorials:
-
на самом деле это было бы так сложно.Я думал,что это будет так же просто,как добавить регистрационный код к моим функциям,как мы делаем с типами сообщений и таксономиями.really it would be that hard. I thought it would be as simple as adding a register code to my functions like we do with post types and taxonomies.
- 1
- 2011-05-13
- xLRDxREVENGEx
-
Я добавлю один этот ответ,но он не слишком сложный.Ссылкаthinkvitamin.com отлично объясняет,как добавлять метабоксы и сохранять их.Ссылка на sltaylor.co.uk - отличное руководство по использованию некоторых передовых методов кодирования.Мое предостережение: будьте осторожны при использовании ловушки save_post.Это вызывается в странное время.Убедитесь,что для переменной WP_DEBUG установлено значениеtrue,чтобы увидеть возможные ошибки,возникающие при ее использовании.I'll plus one this answer, but it's not too complex. The thinkvitamin.com link does a great job explaining how to add the metaboxes and save them. The sltaylor.co.uk link is an awesome tutorial on using some great coding practices. My word of caution is be careful when using the `save_post` hook. It's called at weird times. Make sure to have WP_DEBUG variable set to true in order to see potential errors that arise when using it.
- 1
- 2011-05-13
- tollmanz
-
Просто обновление,я использовал ссылкуthinkvitamin,и это очень помогло,и это была легкая прогулка по настройке настраиваемых полейJust an update i used the thinkvitamin link and that helped tremendously and it was a cake walk on setting up custom fields
- 2
- 2011-05-13
- xLRDxREVENGEx
-
- 2013-04-23
Добавьте/отредактируйте аргумент
supports
(при использованииregister_post_type
),чтобы включитьcustom-fields
для экрана редактирования вашего пользовательского типа сообщения:'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', 'revisions' )
Источник: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields
Add/edit the
supports
argument ( while usingregister_post_type
) to include thecustom-fields
to post edit screen of you custom post type:'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', 'revisions' )
Source: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields
-
Не могли бы вы объяснить,почему это может решить проблему?Can you please explain why this could solve the issue?
- 2
- 2013-04-23
- s_ha_dum
-
Да,это работает. Кто -1 ответил.Не могли бы вы забрать его обратно? С Уважением,Yes, this works. Who -1'ed the answer. Can you please take it back? Regards,
- 1
- 2013-07-25
- Junaid Qadir
-
...а потом.........?...and then.........?
- 8
- 2016-10-26
- Mark
-
- 2014-01-30
Хотя вам придется добавить некоторую проверку,это действие не кажется сложным для текущей версии WordPress.
Обычно вам нужно два шага,чтобы добавить настраиваемое поле в настраиваемый тип сообщения:
- Создайте метабокс,содержащий ваше настраиваемое поле
- Сохраните настраиваемое поле в базе данных.
Эти шаги глобально описаны здесь: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
Пример:
Добавьте настраиваемое поле под названием «функция» в настраиваемый тип сообщения под названием «prefix-teammembers».
Сначала добавьте метабокс:
function prefix_teammembers_metaboxes( ) { global $wp_meta_boxes; add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high'); } add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );
Если вы добавляете или редактируете "prefix-teammembers",срабатывает ловушка
add_meta_boxes_{custom_post_type}
. См. http://codex.wordpress.org/Function_Reference/add_meta_box дляadd_meta_box()
функция. В приведенном выше вызовеadd_meta_box()
используетсяprefix_teammembers_metaboxes_html
,обратный вызов для добавления поля формы:function prefix_teammembers_metaboxes_html() { global $post; $custom = get_post_custom($post->ID); $function = isset($custom["function"][0])?$custom["function"][0]:''; ?> <label>Function:</label><input name="function" value="<?php echo $function; ?>"> <?php }
На втором этапе у вас есть настраиваемое поле для базы данных. При сохранении срабатывает ловушка
save_post_{custom_post_type}
(начиная с версии 3.7,см .: https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts ). Вы можете подключить это,чтобы сохранить настраиваемое поле:function prefix_teammembers_save_post() { if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? global $post; update_post_meta($post->ID, "function", $_POST["function"]); } add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );
Although you should have to add some validation, this action does not seem to be complicated for the current version of WordPress.
Basically you need two steps to add a Custom Field to a Custom Post Type:
- Create a metabox which holds your Custom Field
- Save your Custom Field to the database
These steps are globally described here: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
Example:
Add a Custom Field called "function" to a Custom Post Type called "prefix-teammembers".
First add the metabox:
function prefix_teammembers_metaboxes( ) { global $wp_meta_boxes; add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high'); } add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );
If your add or edit a "prefix-teammembers" the
add_meta_boxes_{custom_post_type}
hook is triggered. See http://codex.wordpress.org/Function_Reference/add_meta_box for theadd_meta_box()
function. In the above call ofadd_meta_box()
isprefix_teammembers_metaboxes_html
, a callback to add your form field:function prefix_teammembers_metaboxes_html() { global $post; $custom = get_post_custom($post->ID); $function = isset($custom["function"][0])?$custom["function"][0]:''; ?> <label>Function:</label><input name="function" value="<?php echo $function; ?>"> <?php }
In the second step you have your custom field to the database. On saving the
save_post_{custom_post_type}
hook is triggered (since v 3.7, see: https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts). You can hook this to save your custom field:function prefix_teammembers_save_post() { if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? global $post; update_post_meta($post->ID, "function", $_POST["function"]); } add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );
-
"почемуprefix_teammembers_save_post срабатывает при добавлении нового?"Вы нашли ответ,я также натыкаюсь на дополнительный функциональный триггер,который я не могу вспомнить?"why is prefix_teammembers_save_post triggered by add new?" have you found an answer, i am also stumbling on a extra function trigger which i can't recall?
- 0
- 2015-02-18
- alex
-
«Добавить настраиваемое поле с именем 'function' в настраиваемый тип сообщения под названием 'prefix-teammembers'.« Что означает «называется»? Имя? Singular_name? Метка? Может быть,это строка,используемая в качестве первого аргумента в register_post_typeИли,может быть,не имеет значения,что это за функция,если она непротиворечива."Add a Custom Field called 'function" to a Custom Post Type called 'prefix-teammembers'." What does "called" mean? The name? The singular_name? The label? Maybe it's the string used as the first argument in the register_post_type function. Or maybe it doesn't matter what it is so long as it's consistent.
- 0
- 2019-10-07
- arnoldbird
-
- 2018-01-03
Существуют различные плагины для настраиваемых мета-блоков и настраиваемых полей.Если вы посмотрите на плагин,ориентированный на разработчиков,вам следует попробовать Meta Box .Он легкий и очень мощный.
Если вы ищете руководство по написанию кода для мета-блока/настраиваемых полей,то это хорошее начало.Это первая часть серии,которая может помочь вам улучшить код,чтобы упростить его расширение.
There are various plugins for custom meta boxes and custom fields. If you look at a plugin that focuses on developers, then you should try Meta Box. It's lightweight and very powerful.
If you're looking for a tutorial on how to write code for a meta box / custom fields, then this is a good start. It's the first part of a series that might help you refine the code to make it easy to extend.
-
- 2020-08-12
Я знаю,что это старый вопрос,но для получения дополнительной информации по теме
WordPress имеет встроенную поддержку настраиваемых полей.Если у вас есть настраиваемый тип сообщения,все,что вам нужно,это включить 'настраиваемые поля' в массив поддержки внутри register_post_type,как ответил @kubante
Обратите внимание ,что этот параметр также доступен для нативных типов сообщений,таких как сообщения и страницы,вам просто нужно включить его
Теперь это настраиваемое поле очень простое и принимает в качестве значения строку.Во многих случаях это нормально,но для более сложных полей я советую использовать плагин Advanced Custom Fields
I know this question is old but for more info about the topic
WordPress has built-in support for custom fields. If you have a custom post type then all you need is to include 'custom-fields' inside the support array inside of register_post_type as answered by @kubante
Note that this option is also available for native post types like posts and pages you just need to turn it on
Now This custom field is very basic and accepts a string as a value. In many cases that's fine but for more complex fields, I advise that you use the 'Advanced Custom Fields' plugin
-
- 2017-10-28
// slider_metaboxes_html , function for create HTML function slider_metaboxes( ) { global $wp_meta_boxes; add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high'); } //add_meta_boxes_slider => add_meta_boxes_{custom post type} add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );
Совершенное знание
// slider_metaboxes_html , function for create HTML function slider_metaboxes( ) { global $wp_meta_boxes; add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high'); } //add_meta_boxes_slider => add_meta_boxes_{custom post type} add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );
Perfect knowledge
Итак,я зарегистрировал несколько произвольных типов сообщений и несколько таксономий.Теперь,хоть убей,я не могу понять код,который мне нужен,чтобы добавить настраиваемое поле в мой настраиваемый тип сообщения.
Мне нужен раскрывающийся список и однострочная текстовая область.Но мне также нужны отдельные поля для типов сообщений.Итак,предположим,что первый тип сообщения имеет 3 поля,а тип сообщения 2 имеет 4 поля,но поля разные.
Любые советы помогут. Я просмотрел кодекс и кое-что нашел,но не могу понять,что мне нужно добавить в мой файл
functions.php