Как получить название произвольного типа записи?
-
С помощью какого кода можно получить «техническое» название произвольного типа записи?
// в functions.php регистрируется произвольный тип записи под названием accessories:
'taxonomies' => array('accessories')
Само слово accessories и нужно получить в переменную в шаблоне. Как это сделать?
Пробовал этот код, но не работает:
$peremennaya = get_query_var('taxonomy'); echo $peremennaya;
-
совершенно неправильно.
произвольный тип записи у вас другой — а accessories это таксономия для этого произвольного типа записи и регистрируется она отдельно.и вообще, я не понимаю для чего вам все это.
вы сами регистрируете произвольные типы записей и таксономии, то есть вы знаете их названия. зачем вам код, выводящий эти названия? на случай внезапной амнезии?<?php $tax = $wp_query->get_queried_object(); echo ''. $tax->name . ''; echo "<br>"; echo ''. $tax->description .''; ?>
Flector Спасибо, проверил, но данный код выводит не ту информацию и не работает на сингл страницах. В страницах таксономий и на главной странице таксономии он разную информацию выводит. Мне нужно чтобы на сингл и в архивах выводилось только так сказать «техническое» название произвольного типа постов в переменную. Это название одно единственное и для архивов и для сингл страниц.
Это нужно чтобы разделить всю информацию сайта на части, на города. Полностью.
Например, чтобы посетители из Москвы видели последние комментарии, материалы, категории, теги только для своего города. И соответственно посетителям из других городов выдавались данные только для своего города. То есть один единственный код можно вставить в шаблоны разных произвольных типов постов и везде выводилась бы своя информация. Если материал принадлежит Москве, то посетитель на сингл странице может увидеть, например, последние комментарии, оставленные для других постов Москвы.Слово accessories в functions.php встречается лишь дважды, вот второй раз:
register_taxonomy('accessories', array('moscow'), array(
И вот это как раз регистрация таксономий (по типу категорий), а код в первом моем сообщении это регистрация произвольного типа постов. Я так понимаю. accessories — его нужно вывести.В общем, вопрос остается открытым.
- Ответ изменён 6 лет, 6 месяцев назад пользователем DirtyDan.
DirtyDan, мне кажется, что Вам надо на время отложить код в сторону и мысленно (или на бумажке, если так удобней) разложить по полочкам записи, типы, таксономии, термы и прочие сущности. Ибо в том, что Вы пишете, имеет место некоторая путаница.
И вот это как раз регистрация таксономий (по типу категорий), а код в первом моем сообщении это регистрация произвольного типа постов. Я так понимаю. accessories — его нужно вывести.
ну если у вас одна единственная таксономия, прикрепленная к записям, то на фига вам код, выводящий ее название? ну я могу еще понять, если вам надо название термина этой таксономии — но сама таксономия то зачем? она у вас везде одинаковая — accessories и смысла получать ее кодом нет совершенно, вы ее вручную можете прописать где угодно.
но сама таксономия то зачем? она у вас везде одинаковая
Таксономий много. Городов много. Каждый город — это свой произвольный тип записи. Тот код из functions.php — таких кодов регистраций в этом файле много, а не один. Соответственно произвольных типов записи много. У каждого города свои таксономии (по типу меток и категорий). Сайт полностью разбит по разным городам.
Нужно чтобы один код мог быть для множества, например, сингл шаблонов, шаблонов с архивами. Но этот код подгружается через<?php get_template_part( 'code' ); ?>
Вывожу весь код. Обратите внимание на последние строки. Там есть слово accessories. Его само и нужно вывести в переменную.
add_action('init', 'moscow'); function moscow() { $labels = array( 'name' => 'Москва', 'singular_name' => 'Москва', 'add_new' => 'Добавить запись Москва', 'add_new_item' => 'Добавить запись Москва', 'edit_item' => 'Редактировать запись Москва', 'new_item' => 'Новая запись Москва', 'view_item' => 'Посмотреть запись Москва', 'search_items' => 'Найти запись Москва', 'not_found' => 'Записей Москва не найдено', 'not_found_in_trash' => 'В корзине записей Москва не найдено', 'parent_item_colon' => '', 'menu_name' => 'Москва' ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => 5, 'supports' => array('title','editor', 'comments','custom-fields'), 'taxonomies' => array('accessories') ); register_post_type('moscow',$args); }
вы неправильно построили структуру сайта. да и в терминологии запутались.
зачем вам произвольный тип записи под каждый город — мне совершенно непонятно. там должен быть один тип, а города должны быть терминами таксономии.
а то, что вы сейчас натворили — мне лично непонятно. accessories это таксономия. она у ваших типов записи moscow всегда одна и та же — accessories. зачем вам ее кодом получать, если вы ее и так знаете?
там должен быть один тип, а города должны быть терминами таксономии.
Если так будет, то получится следующее: если посетитель видит Московский материал (интересен только жителям Москвы), то рядом в блоке с последними оставленными комментариями будут выводиться комментарии и к материалам для остальных городов. Но зачем Москвичу видеть комментарии для Санкт-Петербурга и остальных городов? Зачем Москвичу видеть в блоке последних добавленных материалов материалы для Новосибирска? Московский материал должны окружать только ссылки для Московских материалов. Для Екатеринбургских — ссылки на Екатеринбургские, и т.п.
она у ваших типов записи moscow всегда одна и та же — accessories. зачем вам ее кодом получать
Верно. Вот только типов записи не один, а много. Нужно ее получать чтобы один единственный код мог работать в одном отдельном вынесенном подгружаемом файле для всех существующих типов записей.
<?php сначала получить в переменную текущий тип записи wp_list_categories('taxonomy=ВЫВЕСТИ ЕГО ТУТ ИЛИ В ARRAY); ?>
Таким образом категории для каждого типа записи везде будут свои.
то рядом в блоке с последними оставленными комментариями будут выводиться комментарии и к материалам для остальных городов.
открою вам секрет — переписать блок или виджет вывода последних комментариев на основе записей определенного термина таксономий будет в 1000 раз проще и эффективнее, чем плодить тысячи произвольных типов записей.
Верно. Вот только типов записи не один, а много. Нужно ее получать чтобы один единственный код мог работать в одном отдельном вынесенном подгружаемом файле для всех существующих типов записей.
для меня это звучит совершенно бессмысленно и непонятно.
открою вам секрет — переписать блок или виджет вывода последних комментариев на основе записей определенного термина таксономий будет в 1000 раз проще и эффективнее, чем плодить тысячи произвольных типов записей.
В моем случае кажется это не подойдет. Что вы имеете ввиду подробнее?почему не подойдет то?
структура простейшая — запись произвольного типа с таксономией, скажем, city — пишем запись, присваиваем термин «Москва» — выводим где хотим только записи с этим термином «Москва». в чем проблема то?
Это вряд ли позволит разделить полностью всю информацию на сайте по городам. У каждого материала уже имеются одна таксономия по типу категорий и одна таксономия по типу меток. Они уже объединены дополнительно.
К тому же если сделать города таксономиями (по типу категорий), как вы предлагали, то получатся дубли в url в разных городах если будут, вдруг, одинаковые наименования в тайтлах в разных городах, а они будут.
/privet-mir.html
/privet-mir-2.html
/privet-mir-3.htmlМне не нужны дубли с числами из разных городов так как контента планируется опубликовать на десятки и сотни тысяч страниц и несмотря на одинаковый тайтл материалы там разные, и так и должно быть в норме. К тайтлу лишь в теге <title> будет дописываться название города. Просто потом при дальнейших добавлениях необходимо будет обрабатывать массово контент через плагины на поиски возможных дублей и не нужно чтобы ошибочно показывались дубли с числами в url из разных городов, так как они не будут являться дублями, а дублями будут только те материалы, которые имеют цифры и опубликованы для одного города.
это как создавать произвольный тип записи «Фильм» (movie) с таксономией-жанрами (genre), но вместо правильного создания клепать произвольный тип записи под каждый жанр.
дубли в слагах, вы серьезно?
у вас что одинаковые названия записей будут?
типа «в москве обещают снегопад» — и эта новость уйдет в питер?да даже если слаги будут одинаковыми или через добавление цифр — а вам не все равно? кому на фиг сейчас интересен урл? яндекс браузер вон вообще перестал его выводить.
но в любом случае вы не объяснили главное — что означает таксономия accessories? что в ней будет то? какие термины?
Новостей не будет. Будут кое-какие другие данные. Сайт очень специфичный и именно такая его структура того стоит. Может мне сложно объяснить без информации о чем этот сайт, но это стоит того.
кому на фиг сейчас интересен урл?
Дело совсем не в url, а в том, что мне нужно будет плагином массово удалить/обновить старые данные при последующих заливках материалов. Если я сделаю так как вы сказали, то ошибочно обновятся/удалятся данные, которые не надо обновлять/удалять. Из-за специфики материалов невозможно им присвоить свой ID. Остается разделять по городам. И на удобстве для посетителей это скажется, конечно, в первую очередь.но в любом случае вы не объяснили главное — что означает таксономия accessories? что в ней будет то? какие термины?
Нет никаких акессуаров))) это глобальное название одного произвольного типа данных — одного города, и всё. У других городов свои названия — taxmoskva, taxnovosibirsk, и т.п. Просто изначально когда создавал сайт с нуля взял тестовый код с этим названием.
accessories — это не таксономия, а название произвольного типа записей. Нарпимер, все записи для Москвы имеют это название. Все записи для Спб имеют название — taxspb, Для новосибирска — taxnovosibirsk. И так далее.
вы ерунду говорите.
у всех записей в движке есть ID, используете вы его в урл или нет — он все равно есть. и мне совершенно непонятно, с какого перепуга у вас урлы «privet-mir.html» и «privet-mir-2.html» являются одинаковыми — там потому и есть цифра 2, что одинакового слага быть не может. и если вы собираетесь обновлять данные по слагу записи — то никаких препятствий этому нет.что у вас будет сайт и какие на нем будут материалы вы сказать не хотите. хм, ваше право — но при ваших скудных знаниях движка вам будет чрезвычайно сложно объяснить кому-нибудь, что вы хотите получить.
- Тема «Как получить название произвольного типа записи?» закрыта для новых ответов.