Поддержка Проблемы и решения Как получить название произвольного типа записи?

  • Решено DirtyDan

    (@dirtydan)


    С помощью какого кода можно получить «техническое» название произвольного типа записи?

    // в functions.php регистрируется произвольный тип записи под названием accessories:
    'taxonomies' => array('accessories')

    Само слово accessories и нужно получить в переменную в шаблоне. Как это сделать?

    Пробовал этот код, но не работает:

    $peremennaya = get_query_var('taxonomy');
    echo $peremennaya;
Просмотр 15 ответов — с 16 по 30 (всего 32)
  • Нет никаких акессуаров))) это глобальное название одного произвольного типа данных — одного города, и всё. У других городов свои названия — taxmoskva, taxnovosibirsk, и т.п.

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

    тогда, зачем они вам вообще нужны?
    ориентируйтесь на тип произвольных записей.

    у всех записей в движке есть ID,

    Движок тут не причем. Я говорил об ID в csv перед публикацией. Его невозможно задать из-за специфики материалов.

    Еще раз напишу:

    accessories — это не таксономия, а название произвольного типа записей. Нарпимер, все записи для Москвы имеют это название. Все записи для Спб имеют название — taxspb, Для новосибирска — taxnovosibirsk. И так далее.

    accessories — это не таксономия, а название произвольного типа записей.

    вот, оно, незнание движка во всей красе.
    название произвольного типа записи у вас «moscow», а «accessories» это таксономия, привязанная к типу записей «moscow».
    мне казалось, что само название функции register_taxonomy должно было вас навести на мысль, что это не название произвольного типа записи, а название таксономии.

    Возможно я неправильно где-то выразился. Просто именно с произвольными типами записей и произвольными таксономиями я менее недели работаю. Кажется, мы с вами несколько разобрались.

    Но самое интересное, что я знаю как и спокойно могу выводить слово moscow в переменную! И я этим пользуюсь успешно. Мне нужно другое.
    А мне нужно вывести в переменную именно accessories. получить его в архивах и сингл страницах. Именно чтобы само слово accessories зашло в переменную.

    пишите тупо код:

    
    если тип записей "moscow", то
    переменная равна "accessories",
    если иначе тип записей "spb", то
    переменная равна "taxspb"
    

    иначе вы никак не получите название таксономии, которую вы используете в качестве меток.

    вру, есть способ:

    
    global $post;
    
    $taxonomy_names = get_object_taxonomies( $post );
    print_r( $taxonomy_names );
    

    Да, все верно! Так и нужно. Но как же тогда получить их accessories и taxspb! Чтобы в зависимости от того на какой странице находился код выдавалась та или иная переменные. Если сингл или архив принадлежат Москве, то вывести в переменную accessories. Если Питеру то вывести taxspb. И так далее.

    Спасибо! Это уже гигантский прорыв так как слово accessories появилось наконец-то в выводе. Но не одно, а в таком виде:

    Array ( [0] => accessories [1] => metkispb )

    Как его одно оставить? Что бы было просто: accessories

    может $taxonomy_names[0]?

    может $taxonomy_names[0]?

    Нет. Не сработало.

    а должно.

    Модератор Yuri

    (@yube)

    Но не одно, а в таком виде:

    Если для типа записи moscow указана только таксономия accessories, то metkispb не должно выводится для записей типа moscow. Видимо, что-то пошло не так.

    На всякий случай: удаление таксономии из register_post_type и/или register_taxonomy для опр.типа записей не влияет на те записи, которым уже присвоены термы из этой таксономии, разве что термы не видно в админке, а потому отцепить можно только прямым вмешательством в БД.

    Я почти уверен, что сделано слишком избыточно, что хватило бы одного типа (возможно, даже post :))), одной таксономии «города» и термов-городов.

    Сработало, оказывается 0 только нужно для вывода результатов было ставить!

    <?php global $post;
    $taxonomy_names = get_object_taxonomies( $post, $output = 'names'  );
    print_r( $taxonomy_names[0] );
    ?>

    вы print_r то измените на echo или что другое.

    Получить переменную удалось, но вот после вставки ее в код через array код оказывается нерабочим. Странно, ведь уже подобным образом получилось сделать рабочие коды при получении названий городов для вывода последних комментариев и новых материалов. Может у кого будут идеи почему код не работает?.

    <?php
    global $post;
    $taxonomy_names = get_object_taxonomies( $post, $output = 'names'  );
    
    $args3 = array(
    'taxonomy'  => $taxonomy_names[0],
    'title_li' => '',
    );
    wp_list_categories($args3); ?></ul>
    </div>
    <?php } ?>

    Такой код работает:
    <?php wp_list_categories('taxonomy=accessories&title_li='); ?>
    а с переменной $taxonomy_names[0] через array выше не работает. Как же можно сделать чтобы заработал?

Просмотр 15 ответов — с 16 по 30 (всего 32)
  • Тема «Как получить название произвольного типа записи?» закрыта для новых ответов.