2013-09-26 4 views
2

Невозможно добавить настраиваемые поля в мета-поле пользовательской таксономии в wordpress-3.5.2.Добавить пользовательские поля в мета-поле пользовательской таксономии в wordpress-3.5.2

Я проверил решение в различных блогах, но не смог решить эту проблему. Я использую WordPress-3.5.2

То, что я пытаюсь это: -

// A callback function to add a custom field to our "adtag" taxonomy 
add_action('adtag_edit_form_fields', 'adtag_callback_function', 10, 2); 

// A callback function to save our extra taxonomy field(s) 
add_action('edited_adtag', 'save_taxonomy_custom_fields', 10, 2); 

Я попытался решение от ссылке ниже: -

http://www.codehooligans.com/2010/07/07/custom-meta-for-new-taxonomies-in-wordpress-3-0/ http://sabramedia.com/blog/how-to-add-custom-fields-to-custom-taxonomies

http://www.wpbeginner.com/wp-tutorials/how-to-add-additional-custom-meta-fields-to-custom-taxonomies/

http://shibashake.com/wordpress-theme/add-term-or-taxonomy-meta-data

ответ

1

Я смог следовать указаниям на http://sabramedia.com/blog/how-to-add-custom-fields-to-custom-taxonomies, чтобы создавать пользовательские поля в рамках пользовательской таксономии.

Похоже, вы не включаете этапы после добавления действия. Убедитесь, что вы работаете в файле functions.php и добавляете разметку html для того, как должно отображаться настраиваемое поле. То есть, этот раздел из инструкции SabraMedia:

// A callback function to add a custom field to our "presenters" taxonomy 
function presenters_taxonomy_custom_fields($tag) { 
    // Check for existing taxonomy meta for the term you're editing 
    $t_id = $tag->term_id; // Get the ID of the term you're editing 
    $term_meta = get_option("taxonomy_term_$t_id"); // Do the check 
?> 

<tr class="form-field"> 
    <th scope="row" valign="top"> 
     <label for="presenter_id"><?php _e('WordPress User ID'); ?></label> 
    </th> 
    <td> 
     <input type="text" name="term_meta[presenter_id]" id="term_meta[presenter_id]" size="25" style="width:60%;" value="<?php echo $term_meta['presenter_id'] ? $term_meta['presenter_id'] : ''; ?>"><br /> 
     <span class="description"><?php _e('The Presenter\'s WordPress User ID'); ?></span> 
    </td> 
</tr> 

<?php 
} 
+0

Большое спасибо @Summer по крайней мере, вы дадите мне ответ. Я нашел что-то лучшее решение после много исследований и разработок. то, что я здесь сделал, переписывает пользовательскую таксономическую функцию. и написать нашу собственную аналогичную функцию, как стандартная таксономия post_tag, предоставленная нам. Я добавляю свои поля в эту функцию. Он предоставит мне все настраиваемые поля, включая пользовательские поля таксономии ... – Roopendra

+0

В вашем решении оно создаст страницу таксономии только для страницы таксономии. при использовании таксономии в редактировании или добавлении страницы он дает только одно поле таксономии. Таким образом, мое требование здесь немного отличалось. Мне нужно, чтобы пользовательские поля добавляли или редактировали страницу. – Roopendra

2

Чтобы добавить пользовательское поле в пользовательской таксономии, добавьте следующий код вашей темы functions.php:

// A callback function to add a custom field to our "presenters" taxonomy 
function presenters_taxonomy_custom_fields($tag) { 
    // Check for existing taxonomy meta for the term you're editing 
    $t_id = $tag->term_id; // Get the ID of the term you're editing 
    $term_meta = get_option("taxonomy_term_$t_id"); // Do the check 
?> 

<tr class="form-field"> 
    <th scope="row" valign="top"> 
     <label for="presenter_id"><?php _e('WordPress User ID'); ?></label> 
    </th> 
    <td> 
     <input type="text" name="term_meta[presenter_id]" id="term_meta[presenter_id]" size="25" style="width:60%;" value="<?php echo $term_meta['presenter_id'] ? $term_meta['presenter_id'] : ''; ?>"><br /> 
     <span class="description"><?php _e('The Presenter\'s WordPress User ID'); ?></span> 
    </td> 
</tr> 

<?php 
} 

Далее мы создадим функцию обратного вызова, которую мы будем использовать для сохранения наших настраиваемых полей. Добавьте следующий код functions.php вашей темы:

// A callback function to save our extra taxonomy field(s) 
function save_taxonomy_custom_fields($term_id) { 
    if (isset($_POST['term_meta'])) { 
     $t_id = $term_id; 
     $term_meta = get_option("taxonomy_term_$t_id"); 
     $cat_keys = array_keys($_POST['term_meta']); 
      foreach ($cat_keys as $key){ 
      if (isset($_POST['term_meta'][$key])){ 
       $term_meta[$key] = $_POST['term_meta'][$key]; 
      } 
     } 
     //save the option array 
     update_option("taxonomy_term_$t_id", $term_meta); 
    } 
} 

Код выше будет работать «как есть» для одного или нескольких пользовательской таксономии, никаких изменений необходимы.

Теперь давайте сопоставим эти функции обратного вызова с экраном «редактирования» для наших пользовательских таксономий. Для этого мы будем использовать два манипулятора WordPress, которые доступны для каждой пользовательской таксономии, которую мы создаем. Добавьте следующий код functions.php вашей темы:

// Add the fields to the "presenters" taxonomy, using our callback function 
add_action('presenters_edit_form_fields', 'presenters_taxonomy_custom_fields', 10, 2); 

// Save the changes made on the "presenters" taxonomy, using our callback function 
add_action('edited_presenters', 'save_taxonomy_custom_fields', 10, 2); 

Чтобы получить доступ к настраиваемое поле добавляется к пользовательской таксономии добавьте следующий код внутри пользовательского шаблона систематики (например, таксономия-presenters.php), в PHP блока в верхней части:

// Get the custom fields based on the $presenter term ID 
$presenter_custom_fields = get_option("taxonomy_term_$presenter->term_id"); 

// Return the value for the "presenter_id" custom field 
$presenter_data = get_userdata($presenter_custom_fields[presenter_id]); // Get their data 

для этого примера, чтобы работать, убедитесь, что вы сохранили значение в пользовательском поле на срок вы работаете.

<?php 
    echo '<pre>'; 
    print_r($presenter_custom_fields); 
    echo '</pre>'; 
?> 
3

Посмотрите на Налоговым-мета-класс разработанный, чтобы добавить дополнительные поля в таксономию: WordPress Taxonomies Extra Fields the easy way

1) Включить главный файл класса

require_once("Tax-meta-class/Tax-meta-class.php"); 

2) Настроить таксономические пользовательские поля

$config = array(
    'id' => 'demo_meta_box', 
    'title' => 'Demo Meta Box', 
    'pages' => array('category'), 
    'context' => 'normal', 
    'fields' => array(), 
    'local_images' => false, 
    'use_with_theme' => false 
); 

3) Инициировать ваши таксономия пользовательских полей

$my_meta = new Tax_Meta_Class($config); 

4) Добавление полого

//text field 
$my_meta->addText('text_field_id',array('name'=> 'My Text ')); 
//textarea field 
$my_meta->addTextarea('textarea_field_id',array('name'=> 'My Textarea ')); 

5) Отделка Таксономия Дополнительных полей торможения [важно!]

$my_meta->Finish(); 

6) Начало Сохраненные данные

$saved_data = get_tax_meta($term_id,'text_field_id'); 
echo $saved_data; 
Смежные вопросы