Метки/теги в произвольных полях

Здравствуйте. Требуется, чтоб значение, вводимое в произвольное поле автоматически становилось меткой/тегом или чтоб определённому произвольному полю именно в данном посте соответствовали определённые метки и они были выведены в посте, как значения произвольного поля, т.е., например, так:

ИмяПроизПоля1: метка, метка, метка
ИмяПроизПоля2: метка

Или такое лучше сделать с помощью таксономии (register_taxonomy)? Выводить тогда получается в произвольное поле нужное мне значение в виде ссылки; но если метка/тег автоматом создаёт страницу, если по ней кликнуть, со всеми постами, где эта метка присвоена, то в случае с “таксонометкой” такая страница автоматом не создаётся.

9 Комментарии

  1. Извиняюсь за нубство) разобрался сам. Элементарно в записи задаю нужную мне метку, а в значение нужного мне произвольного поля впихиваю HTML-код с ссылкой на страницу этой метки. (Пример: делаю к записи метку “red”, а в произвольное поле “Цвет” заношу код 2012 )

    Всё оказалось очень просто. Всем спасибо.

  2. Посмотрите плагин Ultimate Taxonomy Manager. Сам я не проверял, но разработчик пишет, что можно управлять любыми таксономиями с помощью произвольных полей.

    Так же есть такой метод: автоматическое создание меток из значений определенного произвольного поля.

    Определите произвольное поле, в котором вы будете через запятую вводить метки:

    define( 'TAGS_FIELD', 'custom_field_name' );
    define( 'TAGS_TYPE', 'post' );

    Конвертация значения произвольного поля в метки (текст вводится через запятую:

    register_activation_hook( __FILE__, 'tags_field_to_tag' );
    function tags_field_to_tag()
    {
        $posts = get_posts(
            array(
                'post_type'     =>TAGS_TYPE,
                'post_status'   => array( 'publish', 'draft', 'pending', 'future' ),
                'numberposts'   => -1,
                'meta_key'      => TAGS_FIELD
            )
        );
        if( empty( $posts ) ) return;
        foreach( $posts as $p )
        {
            if( $meta = get_post_meta( $p->ID, TAGS_FIELD, true ) )
            {
                wp_set_post_terms( $p->ID, $meta, 'post_tag', true );
            }
        }
    }

    Добавление меток при сохранении поста:

    add_action( 'save_post', 'tags_save_post' );
    function tags_save_post( $post_id )
    {
        if( $meta = get_post_meta( $post_id, TAGS_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 );
        }
    }

    Весь код вставляется в functions.php.

    Так же я встречал и другие методы с подобной идеей – конвертацией значения произвольного поля в метки:
    WordPress: how to automatically convert custom fields to post tags
    Add meta tags to WordPress with custom fields

  3. по описанному вами методу “автоматическое создание меток из значений определенного произвольного поля” получилось: метки из произвольного поля создаются чётко как одиночные, так и списком через запятую. Но в посте в произвольных полях значения метками (т.е. ссылками) не стали, а по-прежнему выводятся, как обычный текст. Дело в выводе произвольных полей? сейчас у меня так:

    < ?php $pole1 = get_field(pole1); ?>
    < ?php if($pole1!="") { echo "Пример:   ".$pole1.""; } ?>
    
    • Так а зачем вы выводите содержимое произвольного поля? Выводите метки или делайте произвольные поля ссылками на страницы меток (../tag/значение).

  4. В знании функций PHP полный ноль, только на логике выезжаю иногда. Я понимаю, что $pole1 в echo – это вывод содержимого произвольного поля. Мне нужно, чтобы созданные метки по содержимому именно этого произвольного поля тут выводились, а метки по второму полю выводились соответственно рядом со вторым полем… Т.е. мне не нужно выводить ВСЕ метки поста в куче, а нужно распределить их, как задано произвольными полями. Если такое возможно – с кодом плз… как я понимаю, должен быть цикл какой-то, потому что меток в одном произвольном поле может быть несколько?

  5. делайте произвольные поля ссылками на страницы меток (../tag/значение).

    – это можно, но при большом кол-ве меток и постов это тяжело постоянно делать, вот я и думал, что возможно немного автоматизировать это путём функций. Половина дела сделана – метки из содержимого поля создаются, осталось их в таком же порядке и раздельности по полям выводить)

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*