Як додати користувацькі поля до типу користувальницької пошти?


18

Гаразд, тому я зареєстрував декілька користувацьких типів постів та декілька таксономій. Тепер, протягом мого життя, я не можу з’ясувати код, який мені потрібно додати до спеціального поля до мого спеціального типу публікації.

Мені потрібне спадне поле та одна лінія тексту тексту. Але мені також потрібно мати окремі поля для типів публікацій. Так, скажімо, тип першого повідомлення має 3 поля, а тип 2 - 4, але поля різні.

Будь-які поради допоможуть я переглянув кодекс і знайшов щось, але не можу зрозуміти, що мені потрібно додати до свого functions.phpфайлу


Використовуйте wordpress.org/extend/plugins/types
Ajay Patel

Відповіді:


19

Це, мабуть, складніше, ніж ви думаєте, я б розглядав використання рамки:

Якщо ви хочете написати свій власний, ось кілька гідних навчальних посібників:


1
дійсно було б так важко. Я думав, що це буде так само просто, як додавання коду регістра до моїх функцій, як це робимо з типами постів та систематикою.
xLRDxREVENGEx

1
Я ще один відповідь, але це не надто складно. Посилання thinkvitamin.com робить чудову роботу, пояснюючи, як додати метабокси та зберегти їх. Посилання sltaylor.co.uk - дивовижний посібник із використання деяких чудових практик кодування. Моє обережне слово є обережним під час використання save_postгачка. Це називається в дивні часи. Переконайтеся, що для змінної WP_DEBUG встановлено значення true, щоб побачити потенційні помилки, що виникають при її використанні.
tollmanz

1
Щойно оновлення, я використав посилання thinkvitamin, і це надзвичайно допомогло, і це було прогулянки по
тортах

25

Додайте / редагуйте 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


2
Чи можете ви поясніть, чому це може вирішити це питання?
s_ha_dum

1
Так, це працює. Хто -1'в відповідь. Чи можете ви, будь ласка, взяти його назад? З повагою,
Джунайд Кадір

6
...і потім.........?
Марк

9

Хоча вам доведеться додати деяку перевірку, ця дія не здається складною для поточної версії WordPress.

По суті, вам потрібно два етапи, щоб додати спеціальне поле до спеціального типу публікації:

  1. Створіть метабокс, у якому є власне поле
  2. Збережіть власне поле у ​​базі даних

Ці кроки описані у всьому світі: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type

Приклад:

Додайте спеціальне поле під назвою "функція" до типу користувальницької пошти під назвою "префікс командних членів".

Спочатку додайте метабокс:

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' );

Якщо ви додаєте або відредагуєте "префікс-команди", 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}гака спрацьовує (оскільки v 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' );   

"чому ініціювання prefix_teammembers_save_post додається новим?" Ви знайшли відповідь, я також натрапляю на додатковий тригер функції, який я не можу згадати?
алекс

"Додайте спеціальне поле під назвою" функція "до типу користувальницької пошти під назвою" префікс-teammembers ". Що означає" називається "? Ім'я? Singular_name? Мітка? Можливо, це рядок, який використовується як перший аргумент у register_post_type А може, не має значення, що це так довго, як це послідовно.
arnoldbird

1

Існують різні плагіни для спеціальних метаполев та спеціальних полів. Якщо ви дивитесь на плагін, який фокусується на розробниках, то слід спробувати Meta Box . Це легкий і дуже потужний.

Якщо ви шукаєте підручник про те, як написати код для мета-вікна / спеціальних полів, то це хороший початок. Це перша частина серії, яка може допомогти вам уточнити код, щоб полегшити його розширення.


-6
// 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' );

Досконалі знання

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.