WordPress 4.4 введена Термин мета dataкоторый позволяет сохранить мета значения для точки аналогичным образом, чтобы оставлять мета-данные.
Это долгожданный и логичным дополнением к системе WordPress .
Пока должность и комментировать мета системы позволило нам добавить произвольные данные в записях и комментариях.Это может быть использован для добавления рейтинги комментариях, укажите ваше настроение, когда вы пишете пост, приложите цены на должности продукции, и различные другие сведения вы думаете имеет отношение к вашему содержанию.По последней версии WordPress, мета-данные теперь могут быть добавлены к терминов, которые позволяет нам создавать функции, такие как категории по умолчанию эскизов в стандартизированной форме.Этот учебник покажет вам, как вы можете редактировать, обновлять и восстанавливать эти мета-данные для точки .
Под капотом Срок метаданных Link
Логика срок мета данных не является новой, уже используется для сообщений, комментариев и пользователей .
Чтобы включить мета-данные для точки, новый termmeta
была введена таблица.Это экономит комбинацию из term_id
meta_key
и meta_value
Плюс приращение meta_id
.
Мета данных Функции Link
Четыре новые функции были введены для обработки создания, чтения, обновления и удаления (CRUD) операций для термина мета данных:
add_term_meta()
: Добавляет мета dataupdate_term_meta()
: Обновляет существующие мета datadelete_term_meta()
: Удаляет мета dataget_term_meta()
: Извлекает мета data
Под капотом, эти функции используют тот же код, что соответствующие функции для пост мета-данных, а также использовать .
Как использовать __33 срок мета-данные |Link
В недавнем проекте, я должен был назначить дополнительные атрибуты неиерархических выражении, что большой шанс испытать новые метаданные имеют .
Проект использовал пользовательский тип записи, чтобы представляют дома.Особенности дома (например, телевидение, диван и т.д.) были условия в пользовательской таксономии.Редактор информации дома хотел перечислить особенности, основанные на группе, которая не должна быть функция сама по себе.Следовательно, я решил добавить эту группу, используя термин мета-данные .
Систематика я был house_feature
, Но вы также можете использовать существующий category
или post_tag
таксономии, если вы хотите использовать данные Термин мета с почтовыми категорий или тэгов .
Во-первых, я создал свой художественный таксономии:
add_action('init', 'register_feature_taxonomy');
function register_feature_taxonomy() {
$labels = array(
'name' => _x( 'Features', 'taxonomy general name', 'my_plugin' ),
'singular_name' => _x('Features', 'taxonomy singular name', 'my_plugin'),
'search_items' => __('Search Feature', 'my_plugin'),
'popular_items' => __('Common Features', 'my_plugin'),
'all_items' => __('All Features', 'my_plugin'),
'edit_item' => __('Edit Feature', 'my_plugin'),
'update_item' => __('Update Feature', 'my_plugin'),
'add_new_item' => __('Add new Feature', 'my_plugin'),
'new_item_name' => __('New Feature:', 'my_plugin'),
'add_or_remove_items' => __('Remove Feature', 'my_plugin'),
'choose_from_most_used' => __('Choose from common Feature', 'my_plugin'),
'not_found' => __('No Feature found.', 'my_plugin'),
'menu_name' => __('Features', 'my_plugin'),
);
$args = array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
);
register_taxonomy('house_feature', array('houses'), $args);
}
Вы должны изменить houses
тип пост в последней строке в одном вы используете, или просто, чтобы post
если вы хотите принять новую классификацию для проведения испытаний перспективе на должностях по умолчанию .
Если вы используете код из этой статьив __0 вашей темы |functions.phpфайл или в плагин, убедитесь, что текст области my_plugin
соответствует текстовый домен вашей темы или плагина.Оператор my_plugin
Текст домена будет работать в плагине с my_plugin
Пуля .
Группы Я поручил дом имеет в управлялись через настройки.Она также может быть простой массив.Ради короткий, но полезный срок введения в мета, я использую следующий глобальный массив, чтобы держать доступные группы:
$feature_groups = array(
'bedroom' => __('Bedroom', 'my_plugin'),
'living' => __('Living room', 'my_plugin'),
'kitchen' => __('Kitchen', 'my_plugin')
);
Продления срока Форма Link
Чтобы назначить метаданные условиям, мы должны расширить формы Термин редактирования.Сложная часть является то, что крючки мы должны теперь строятся динамически .
Добавление метаданных с новым термином Link
Для того, чтобы продлить вид, чтобы добавить термин, мы используем из {$taxonomy}_add_form_fields
крюк.Для наших house_feature
таксономии это решает в house_feature_add_form_fields
.
add_action( 'house_feature_add_form_fields', 'add_feature_group_field', 10, 2 );
function add_feature_group_field($taxonomy) {
global $feature_groups;
?><div class="form-field term-group">
<label for="featuret-group"><?php _e('Feature Group', 'my_plugin'); ?></label>
<select class="postform" id="equipment-group" name="feature-group">
<option value="-1"><?php _e('none', 'my_plugin'); ?></option><?php foreach ($feature_groups as $_group_key => $_group) : ?>
<option value="<?php echo $_group_key; ?>" class=""><?php echo $_group; ?></option>
<?php endforeach; ?>
</select>
</div><?php
}
Это добавляет выберите форму прямо между оригинальными поля формы и кнопку отправки .
Чтобы сохранить термин мета нам нужно подключить в акции, которая вызывается, когда новый термин в настоящее время сохраняется.На этот раз мы используем created_{$taxonomy}
подключить .
add_action( 'created_house_feature', 'save_feature_meta', 10, 2 );
function save_feature_meta( $term_id, $tt_id ){
if( isset( $_POST['feature-group'] ) && '' !== $_POST['feature-group'] ){
$group = sanitize_title( $_POST['feature-group'] );
add_term_meta( $term_id, 'feature-group', $group, true );
}
}
Мы получаем термин данные из $_POST
Массив отправлено с формой и сохранить его, используя новый add_term_meta()
функция.Как add_post_meta()
, Она занимает четыре аргумента:
$term_id
: Идентификатор термина,$meta_key
: Мета ключ$meta_value
: Значение,$unique
: То ли ключ может быть использован только один раз;по умолчаниюfalse
.
Я ставлю $unique
истинно, потому что я хочу каждый особенность дома, должны быть перечислены в только одной группы .
Обновление члена с Link
Даже если они имеют сходные черты, добавив новый термин и обновление уже существующего технически отличается в WordPress.Таким образом, мынужно добавить процедуру слишком .
Мы используем из {$taxonomy}_edit_form_fields
крюк, чтобы получить поле для группы в форме редактирования .
add_action( 'house_feature_edit_form_fields', 'edit_feature_group_field', 10, 2 );
function edit_feature_group_field( $term, $taxonomy ){
global $feature_groups;
// get current group ...
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров