Чтобы добавить пользовательское поле в пользовательской таксономии, добавьте следующий код вашей темы 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>';
?>
Большое спасибо @Summer по крайней мере, вы дадите мне ответ. Я нашел что-то лучшее решение после много исследований и разработок. то, что я здесь сделал, переписывает пользовательскую таксономическую функцию. и написать нашу собственную аналогичную функцию, как стандартная таксономия post_tag, предоставленная нам. Я добавляю свои поля в эту функцию. Он предоставит мне все настраиваемые поля, включая пользовательские поля таксономии ... – Roopendra
В вашем решении оно создаст страницу таксономии только для страницы таксономии. при использовании таксономии в редактировании или добавлении страницы он дает только одно поле таксономии. Таким образом, мое требование здесь немного отличалось. Мне нужно, чтобы пользовательские поля добавляли или редактировали страницу. – Roopendra