Тег записи WordPress и пользовательское поле
Для преобразования старых произвольных полей вы можете написать плагин, который при активации получает все записи с именем вашего произвольного поля и преобразует их в метки с помощью удобной функции wp_set_post_terms
.
Сначала установите несколько констант с именами ваших полей и типом записи.
<?php
/**
* ИЗМЕНИТЕ ЭТО! Какое имя у вашего произвольного поля?
*/
define( 'WPSE29498_FIELD', 'custom_field_name' );
/**
* ИЗМЕНИТЕ ЭТО! Какой тип записи?
*/
define( 'WPSE29498_TYPE', 'post' );
Затем функция хука активации:
<?php
register_activation_hook( __FILE__, 'wpse29498_field_to_tag' );
function wpse29498_field_to_tag()
{
$posts = get_posts(
array(
'post_type' => WPSE29498_TYPE,
'post_status' => array( 'publish', 'draft', 'pending', 'future' ),
'numberposts' => -1,
'meta_key' => WPSE29498_FIELD
)
);
if( empty( $posts ) ) return;
foreach( $posts as $p )
{
if( $meta = get_post_meta( $p->ID, WPSE29498_FIELD, true ) )
{
wp_set_post_terms( $p->ID, $meta, 'post_tag', true );
}
}
}
И, наконец, вы можете подключиться к save_post
и проверить, есть ли значение произвольного поля. Если оно есть, убедитесь, что это ещё не метка, и добавьте её, если это не так.
Не уверен, нужно ли вам это для постоянного использования или для одноразового преобразования.
<?php
add_action( 'save_post', 'wpse29498_save_post' );
function wpse29498_save_post( $post_id )
{
if( $meta = get_post_meta( $post_id, WPSE29498_FIELD, true ) )
{
// получаем текущие метки записи
$terms = wp_get_object_terms( $p->ID, 'post_tag', 'name' );
// если наша метка уже есть, выходим
if( in_array( $meta, $terms ) ) return;
// добавляем метку, если её нет
wp_set_post_terms( $post_id, $meta, 'post_tag', true );
}
}

Насколько мне известно, это невозможно сделать автоматически "из коробки". Быстрый поиск в Google показывает, что в настоящее время нет плагинов, которые могли бы выполнить эту задачу за вас.
Однако я не вижу причин, по которым нельзя было бы написать плагин для этого. Вам нужно будет использовать хук "save_post", который срабатывает каждый раз при сохранении/обновлении записи, проверять пользовательское поле и применять его как тег.
Документация по этому конкретному хуку скудна, но он упоминается здесь:

Я столкнулся с похожим вопросом некоторое время назад, когда кто-то спрашивал, как автоматически добавлять ключевые слова из плагина All-in-one SEO в качестве меток записи (http://www.vidalquevedo.com/how-to-add-tags/#li-comment-62)
Увидев ваш вопрос, я взял тот скрипт, который написал, и модифицировал его, чтобы он также автоматически добавлял значения произвольных полей в качестве меток записи.
Вот ссылка на скрипт и статью: http://www.vidalquevedo.com/wordpress-how-to-automatically-convert-custom-fields-to-post-tags/
Спасибо, и дайте мне знать, если это поможет!
Vq.

Я думаю, ваше решение — добавить ключевые слова 'All in one seo' в качестве тегов, как я прочитал на vidalquevedo.com/how-to-add-tags#comment-123. Я не использую All in one SEO, просто вставляю пользовательское поле в запись и хочу, чтобы оно стало тегами для этой записи.
