Страхлив тип публикация. Най-добрите WordPress плъгини за персонализирани типове публикации. Шаблон за създаване на нов тип публикация

Създава нов тип запис или променя съществуващ.

От версия 4.6 беше създаден нов клас WP_Post_Type и целият код на функцията вече се обработва от този клас и тази функция се превърна в обвивка за него.

Таксономии

Ако регистрирате таксономия за нов тип публикация, винаги регистрирайте тази таксономия, когато регистрирате типа публикация, като използвате параметъра таксономии. Ако не направите това, типът на публикацията и таксономиите няма да бъдат разпознати като свързани, когато се задействат куки като parse_query или pre_get_posts. Това може да доведе до неочаквани последици и грешки.

Таксономиите трябва да се регистрират отделно.Таксономията се посочва при регистриране на типа пост, но това е само връзка, тя трябва да бъде регистрирана отделно с помощта на register_taxonomy ().

Важно: след създаване на нов тип публикация. Не забравяйте да отидете на страницата Настройки → Постоянни връзки. Това е необходимо, за да бъдат пресъздадени NC правилата и да бъдат добавени правилата от новия тип запис.

Се завръща

Обект WP_Post_Type (от версия 4.6).

Шаблон за създаване на нов тип публикация
add_action ("init", "register_post_types"); функция register_post_types () (register_post_type ("post_type_name", array ("label" => null, "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" => "____", // име на менюто) , "description" => "", "public" => true, // "publicly_queryable" => null , // зависи от public // "exclude_from_search" => null, // зависи от public // "show_ui" => null, // зависи от public // "show_in_nav_menus" => null, // зависи от public "show_in_menu "=> null, // дали да се показва в менюто на администратора //" show_in_admin_bar "=> null, // зависи от show_in_menu" show_in_rest "=> null, // добавяне към REST API. C WP 4.7 "rest_base" => null, // $ post_type. C WP 4.7 "menu_position" => null, "menu_icon" => null, // "capability_type" => "post", // "capabilities" => "post", // масив от допълнителни права за този тип публикация / / "map_meta_cap" => null, // Задайте на true, за да активирате манипулатора на специални права по подразбиране "hierarchical" => false, "supports" => ["title", "editor"], // "title", "editor ", " автор "," миниатюра "," откъс "," проследяване "," персонализирани полета "," коментари "," ревизии "," атрибути на страница "," постформати "" таксономии "=>," has_archive "= > false, "rewrite" => true, "query_var" => true,)); )

Използване

register_post_type ($ post_type, $ args); $ тип_пост (низ) (задължително)

Име на типа на записа (максимум 20 знака). Може да съдържа само малки букви, цифри, _ или -: a-z0-9_-.

Запазени заглавия за видове публикации... Следните имена не могат да се използват за нови типове публикации, тъй като се използват от WordPress и вашият код ще противоречи на текущия код или функции на WordPress:

Публикуване на ревизия на прикачен файл на страница nav_menu_item custom_css customize_changeset действие автор на поръчка тема $ args (масив)Масив от аргументи.
По подразбиране: масив () (параметри по подразбиране)

Аргументи на параметър $ Args

етикет (линия)Името на типа запис, маркиран за превод на друг език.
По подразбиране: $ post_typeетикети (масив)

За ненастроени низове (т.е. по подразбиране), ще се използва следното:

  • За типове публикации, които не са от дърво, имената на „публикации“.
  • За дървовидни типове публикации, имената на "постоянни страници".

В масива могат да бъдат посочени следните аргументи:

"name" => "", // основно име за типа публикация, обикновено множествено число. "singular_name" => "", // име за един запис от този тип. "add_new" => "", // текст за добавяне на нов запис, как да "добавя нов" за публикации в административния панел. // Ако трябва да използвате превод на името, въведете го така: _x ("Добавяне на ново", "продукт"); "add_new_item" => "", // заглавен текст за новосъздадения запис в административния панел. Как да "Добавя нова публикация" за публикации. "edit_item" => "", // текст за редактиране на типа публикация. По подразбиране: редактиране на публикация/редактиране на страница. "new_item" => "", // текст на новия запис. По подразбиране: "Нова публикация" "view_item" => "", // текст за преглед на публикация от този тип. По подразбиране: „Преглед на публикацията“ / „Преглед на страницата“. "search_items" => "", // текст за търсене на тези типове публикации. По подразбиране е "Намиране на публикация" / "Намиране на страница". "not_found" => "", // текст, ако нищо не е намерено в резултат на търсенето. // По подразбиране: "Няма намерени публикации" / "Няма намерени страници". "not_found_in_trash" => "", // текст, ако не е намерен в кошчето. По подразбиране „Няма открити публикации в кошницата“ / „Страници // не бяха намерени в кошницата“. "parent_item_colon" => "", // текст за родителски типове. Този параметър не се използва за недървесни типове публикации. // По подразбиране "Родителска страница". "all_items" => "", // Всички записи. По подразбиране е равно на menu_name "archives" => "", // Запис на архиви. По подразбиране е all_items "insert_into_item" => "", // Вмъкнете "uploaded_to_this_item" => "", // Качен за тази публикация "featured_image" => "", // Миниизображение на публикация "set_featured_image" => "" , / / Задайте миниизображението на публикацията "remove_featured_image" => "", // Премахнете миниизображението на публикацията "use_featured_image" => "", // Използвайте миниизображението на публикацията "filter_items_list" => "", // Филтрирайте списъка с публикации "items_list_navigation " = > "", // Навигация през записи "items_list" => "", // Списък с записи "menu_name" => "", // Име на менюто. По подразбиране е име. "name_admin_bar" => "", // Име в администраторската лента (лента с инструменти). По подразбиране е singular_name. "view_items" => "", // Име в лентата с инструменти за архивната страница от типа публикация. По подразбиране: Преглед на публикации / Преглед на страници. От WP 4.7. "attributes" => "", // Име на метабокса с атрибути на публикацията (за страници това е метабоксовото поле с атрибути на страницата). // По подразбиране: Атрибути на публикация или Атрибути на страница. От WP 4.7. "item_updated" => "", // Текстът на бележката в редактора на публикациите, когато публикацията се актуализира. С WP 5.0. // По подразбиране: "Публикуването е актуализирано." / "Страницата е актуализирана." "item_published" => "", // Текстът на бележката в редактора на публикациите, когато публикацията е публикувана. С WP 5.0. // По подразбиране: "Публикуването е публикувано." / "Публикувана страница." "item_published_privately" => "", // Текстът на бележката в редактора на публикации при публикуване на частна публикация. С WP 5.0. // По подразбиране: "Публикацията е публикувана частно." / "Страницата е публикувана" item_reverted_to_draft "=>" ", // Текст на бележката в редактора на публикациите, когато публикацията се връща в черновата. С WP 5.0. // По подразбиране: "Публикацията е върната към чернова." / "Страницата е върната към" item_scheduled "=>" ", // Текстът на бележката в редактора на публикациите за планирана публикация за бъдеща дата. С WP 5.0. // По подразбиране: "Публикуването е насрочено." / "Страницата е насрочена."

За пълен списък със стойности вижте get_post_type_labels ()

По подразбиране: ако не е зададено, name и singular_name ще приемат стойността на аргумента label

Описание (линия)Кратко описание на този тип публикация. Стойността се използва в REST API. Стойността може да бъде получена с помощта на функцията get_the_post_type_description ().
По подразбиране: ""обществено (логично)

Определя дали типът на публикацията е публичен или не. Много други са изградени на базата на този параметър, т.е. това е един вид предварителна настройка за следните параметри:

    • show_ui = false - не показвайте потребителския интерфейс (UI) за този тип публикация
    • publicly_queryable = false - заявките, свързани с този тип публикация, няма да работят в шаблона
    • exclude_from_search = true - този тип публикация няма да се разглежда при търсене в сайта
    • show_in_nav_menus = false - този тип публикация ще бъде скрит от избора на навигационното меню
  • вярно
    • show_ui = вярно
    • publicly_queryable = вярно
    • exclude_from_search = false
    • show_in_nav_menus = вярно
  • title - заглавие;
  • редактор - блок за въвеждане на съдържание;
  • автор - блок за избор на автор;
  • блок с миниатюри за избор на миниатюра на записа. Трябва също да активирате поддръжка за инсталиране на темата след миниатюри;
  • excerpt - блок за въвеждане на оферта;
  • тракбекове - включва поддръжка за тракбекове и пингове (не отговаря за блокове);
  • custom-fields - блок за настройка на персонализирани полета;
  • коментари - блок от коментари (дискусия);
  • ревизии - блок от ревизии (не е показан все още няма ревизии);
  • page-attributes - блок от атрибути за постоянни страници (шаблонна и дървовидна връзка на публикациите, дървовидната структура трябва да бъде активирана).
  • пост-формати - Блок от формати на публикации, ако са включени в темата.

По подразбиране: масив ("заглавие", "редактор")

Register_meta_box_cb (линия)функция за обратно извикване, която ще се задейства при задаване на мета блокове за страницата за създаване/редактиране от този тип публикация. Използвайте remove_meta_box () и add_meta_box () във функцията за обратно извикване.
По подразбиране: нетаксономии (масив)

Масив от регистрирани таксономии, които да бъдат свързани с този тип публикация, например: категория или post_tag.

Можете да свържете таксономии с публикация по-късно, като използвате функцията register_taxonomy_for_object_type ().

Таксономиите трябва да бъдат регистрирани с помощта на функцията register_taxonomy ().

Този параметър ни позволява да посочим коя група от крайни точки искаме да се свържем с типа на публикацията, която се създава (URL на публикацията). Например, ако посочите "permalink_epmask" = EP_PAGES & EP_TAGS, тогава нашият тип публикация ще има всички допълнителни варианти на URL адреси (крайни точки), които са предоставени за постоянни страници и тагове.

По подразбиране, permalink_epmask = EP_PERMALINK - това означава, че крайните точки ще бъдат добавени към URL адреса на типа публикация, която се създава (в правилата на CNC), които се добавят към обикновените публикации в WordPress: пагинация, страница с коментари и т.н.

Ако не искате да добавяте никакви крайни точки към новия тип запис, тогава трябва да посочите EP_NONE. Или обратното, посочете EP_ALL, когато искате да добавите всички крайни точки.

По подразбиране: EP_PERMALINK

Има_архив (низ / булева)

Активирайте поддръжката на архивни страници за този тип публикация (напр. URL адресът на публикация изглежда така: site.ru/type/post_name, тогава URL адресът на архива ще бъде: site.ru/type.

Ако посочите низ, тогава той ще се използва в CNC. Например, нека посочим страницата с тип тук и да получим връзка към архива на типа публикация от следния тип: site.ru/typepage.
Файлът на този архив в темата ще изглежда като archive-type.php. Ще бъде добавено ново NC правило за архиви, ако е включен аргументът за пренаписване.
По подразбиране: false

нова редакция (масив / булева)

Дали да се използва CNC за този тип запис. Посочете false, за да не използвате CNC. По подразбиране: true - името на типа публикация се използва като префикс във връзката. Можете да посочите допълнителни параметри в масива за изграждане на CNC:

    охлюв (линия)
    CNC префикс (/ префикс / write_label). Използвайте масив ("slug" => $ slug), за да създадете различен префикс.
    В този параметър могат да се зададат заместители от типа% категория%. Но трябва да ги създадете с add_rewrite_tag () и да научите WP да ги разбира.
    По подразбиране: име на типа публикация

    with_front (логично)
    Дали е необходимо да вмъкнете общия префикс от настройките в началото. Префиксът е взет от $ wp_rewite-> front. Например, ако структурата на постоянните връзки на публикациите в настройките изглежда като blog /% postname%, тогава с false получаваме: / news / post_name, а с true получаваме: / blog / news / post_name.
    По подразбиране: вярно

    храни (логично)
    Дали да се добави правило за CNC за RSS емисия от този тип публикация.
    По подразбиране: стойността на аргумента has_archive

  • страници (логично)
    Дали да се добави CNC правило за пагинация на архива на записи от този тип. Например: / post_type / page / 2.
    По подразбиране: вярно

По подразбиране: true (типът на записа се използва като префикс)

Query_var (низ / булева)

Задава името на параметъра на заявката за създавания тип публикация.

Задаваме го на false, за да премахнем възможността за заявки.

  • false - Деактивира параметъра на заявката. Публикацията няма да бъде достъпна на URL адреса: /? (Query_var) = (post_slug).
  • низ - посочва името на параметъра на заявката. /? (query_var_string) = (post_slug).

Забележка: query_var е безсмислен, ако publicly_queryable = false.

Забележка: Този параметър добавя посочената стойност (ако не е посочена, тогава етикета на типа публикация) към списъка с разрешени параметри на WordPress, така че WordPress да разбира този параметър на заявката, вижте add_rewrite_tag (). WordPress премахва всички параметри на заявката, за които не знае.

пример:
Да предположим, че задаваме типа на записа на book и сме посочили низа име на книга в този параметър. Сега, ако отидете на страницата на книгата чрез връзката / книга / хари-потър, при обработката на кода тази страница get_query_var ("име на книга") ще върне хари-потър. И ако не сме посочили нищо в този параметър (би било вярно), тогава за да получим Хари Потър, ще трябва да използваме get_query_var ("книга").

По подразбиране: true - зададен е аргумент $ post_type

Can_export (логично)Възможността за експорт на този тип записи.
По подразбиране: вярноизтрий_с_потребител (логично)

  • true - изтриване на записи от този тип, принадлежащи на потребителя, когато изтривате потребителя. Ако кошчето е активирано, записите няма да бъдат изтрити, а ще бъдат поставени в кошчето.
  • false - когато потребител бъде изтрит, неговите записи от този тип няма да бъдат обработени по никакъв начин.
  • null - публикациите ще бъдат премахнати или преместени в кошчето, ако е зададен post_type_supports ("автор"). И те няма да бъдат обработени, ако типът на публикацията не поддържа "автор".
// $ tax_slug = get_term_parents_list ($ term_id, $ tax_name, array ("separator" => "/", "format" => "slug", "link" => false, "inclusive" => true,));

Също така е важно при регистриране на тип публикация йерархичният параметър да е false!

# 3 Добавяне на таксономия към CNC (поща и данък имат един и същ префикс)

Този пример показва как да създадете запис на Въпроси и секции за него. В този случай CNC ще:

  • За записа: site.ru/faq/(категория)/(етикет-записи)
  • При дакела: site.ru/faq/(категория)

Важно е първо да промените ставката, а след това вида на влизане ...

Add_action ("init", "register_faq_post_type"); функция register_faq_post_type () (// Раздел за въпроси - faqcat register_taxonomy ("faqcat", array ("faq"), array ("label" => "Секция за въпроси", // дефиниран от параметъра $ labels-> name "labels") => масив ("name" => "Секции за въпроси", "singular_name" => "Секция за въпроси", "search_items" => "Търсене на секция с въпроси", "all_items" => "Всички секции с въпроси", "parent_item" => " Секция за родителски въпроси "," parent_item_colon "=>" Секция за родителски въпроси: "," edit_item "=>" Редактиране на секция с въпроси "," update_item "=>" Актуализиране на секцията с въпроси "," add_new_item "=>" Добавяне на секция въпрос "," new_item_name "=>" Нов раздел с въпроси "," menu_name "=>" Раздел с въпроси ",)," описание "=>" Заглавия на раздел с въпроси ", // описание на таксономията" public "=> true, " show_in_nav_menus "=> false, // равен на аргумента public" show_ui "=> true, // равен на аргумента public" show_tagcloud "=> false, // равен на аргумента show_ui" йерархичен "=> true," пренапишете "=> масив (" slug "=>" faq "," йерархичен "=> false", with_front "=> false," feed "=> false)," show_admin_column "=> true, // Дали да се разреши или не автоматично създаване на таксономична колона в свързаната таблица с тип публикации. (от версия 3.5))); // тип на публикацията - въпроси - faq register_post_type ("faq", array ("label" => "Въпроси", "labels" => масив ("name" => "Въпроси", "singular_name" => "Въпрос", "menu_name" => "Архив на въпроси", "all_items" => "Всички въпроси", "add_new" => "Добавяне на въпрос", "add_new_item" => "Добавяне на нов въпрос", "edit" => "Редактиране", "edit_item" => "Редактиране на въпрос", "new_item" => "Нов въпрос", "description" => "", "public" => true, "publicly_queryable" => true, "show_ui" => true , "show_in_rest" => false, "rest_base" => "", "show_in_menu" => true, "exclude_from_search" => false, "capability_type" => "публикация", "map_meta_cap" => истина, "йерархичен" = > false, "rewrite" => array ("slug" => "faq /% faqcat%", "with_front" => false, "pages" => false, "feeds" => false, "feed" => false ), "has_archive" => "faq", "query_var" => true, "supports" => масив ("заглавие", "редактор"), "таксономии" => масив ("faqcat"),)); ) ## Нека филтрираме произволния CNC тип // филтър: apply_filters ("post_type_link", $ post_link, $ post, $ leavename, $ sample); add_filter ("post_type_link", "faq_permalink", 1, 2); функция faq_permalink ($ permalink, $ post) (// изход, ако това не е нашия тип публикация: без holder% products% if (strpos ($ permalink, "% faqcat%") === false) return $ permalink; // Вземете данъчни елементи $terms = get_the_terms ($post, "faqcat"); // ако има елемент, заменете притежателя if (! is_wp_error ($термини) &&!praznо ($термини) && is_object ($термини)) $term_slug = array_pop ($термини) -> slug; // няма елемент, но трябва да има ... else $ term_slug = "no-faqcat"; връщане str_replace ("% faqcat%", $ term_slug, $ постоянна връзка); )

Бележки

Плъгин за regs тип пост

Има удобен плъгин, който ви позволява да регистрирате нови типове публикации и нови таксономии: Custom Post Type UI

Преименуване на заглавия на тип публикации

Ако типът на публикацията вече е регистриран, но трябва да го наречем друго, използвайте следния код.

Този код показва как да преименувате типа публикация по подразбиране "Публикации" на "Статии":

## заменете думата "записи" със "статии" // $ labels = apply_filters ("post_type_labels _ ($ post_type)", $ labels); add_filter ("post_type_labels_post", "rename_posts_labels"); функция rename_posts_labels ($ labels) (// замяната автоматично няма да работи, например заменен: Record = Article, а в теста ще изглежда като "Преглед на статията" / * оригинален stdClass Object ("name" => "Records", " singular_name" => " Запис "," add_new "=>" Добавяне на нов "," add_new_item "=>" Добавяне на запис "," edit_item "=>" Редактиране на запис "," new_item "=>" Нов запис "," view_item "=>" Преглед на запис "," search_items "=>" Търсене на записи "," not_found "=>" Няма намерени записи. "," not_found_in_trash "=>" Няма намерени записи в количката. "," parent_item_colon "= >" "," all_items " => "Всички публикации", "archives" => "Архиви публикации", "insert_into_item" => "Вмъкване в публикация", "uploaded_to_this_item" => "Качен за тази публикация", "featured_image" => "Публикуване на миниатюра", "set_featured_image" => "Задаване на миниатюра", "remove_featured_image" => "Премахване на миниатюра", "use_featured_image" => "Използване като миниатюра", "filter_items_list" => "Списък с филтриране", " списък_артикул _navigation "=>" Навигиране в списъка с записи "," items_list "=>" Списък с записи "," menu_name "=>" Записи "," name_admin_bar "=>" Записи ",) * / $ new = масив (" name " => "Статии", "singular_name" => "Статия", "add_new" => "Добавяне на статия", "add_new_item" => "Добавяне на статия", "edit_item" => "Редактиране на статия", "нов_елемент" => "Нова статия", "view_item" => "Преглед на статията", "search_items" => "Търсене на статии", "not_found" => "Няма намерени статии.", "Not_found_in_trash" => "Няма намерени статии в кошница." , "parent_item_colon" => "", "all_items" => "Всички статии", "archives" => "Архив на статии", "insert_into_item" => "Вмъкване в статия", "uploaded_to_this_item" => "Качен за тази статия "," featured_image "=>" Миниатюра на статия "," filter_items_list "=>" Филтриране на списъка със статии "," items_list_navigation "=>" Придвижване в списъка със статии "," items_list "=>" Списък със статии "," menu_name "=> "Статии", "name_admin_bar" => "Статия", // параграф "добави"); връщане (обект) array_merge ((масив) $ етикети, $ нов); )

Много евтини, но качествени последователи в Instagram са достъпни на https://doctorsmm.com/. Тук можете да намерите всяка оферта лично за вашия акаунт. Сайтът представя голямо разнообразие от качество на добавените страници и ограничения на скоростта, както и насочване към аудиторията по географски признак.

Бележки

  • Глобални. масив. $ wp_post_types Списък с типове публикации.

Списък на промените

От версия 2.9.0 Въведени.
От версия 3.0.0 Аргументът show_ui вече се прилага на новия екран за публикации.
От версия 4.4.0 Аргументът show_ui вече се прилага на екрана за списък на типа публикация и екрана за редактиране на публикация.
От версия 4.6.0 Върнатият обект от тип публикация вече е екземпляр на WP_Post_Type.
От версия 4.7.0 Въведени аргументи show_in_rest, rest_base и rest_controller_class за регистриране на типа публикация в REST API.

Регистрирайте код на вида на пощата: wp-includes / post.php WP 5.2.3

20) (_doing_it_wrong (__ FUNCTION__, __ („Имената на типове публикации трябва да са с дължина между 1 и 20 знака.“), „4.2.0“); връщане на нова WP_Error („post_type_length_invalid“, __ („Имената на типове публикации трябва да бъдат между 1 и 20 знака на дължина. "));) $ Post_type_object = нов WP_Post_Type ($ post_type, $ args); $ post_type_object-> add_supports (); $ post_type_object-> add_rewrite_rules (); $ post_type_object-> register_meta_boxes (); $ wp_post_types [$ post_type] = $ post_type_object; $ post_type_object-> add_hooks (); $ пост_тип_обект-> регистър_таксономии (); / ** * Задейства се след регистриране на тип публикация. * * @since 3.3.0 * @since 4.6.0 Преобразува параметъра „$ post_type“, за да приеме обект WP_Post_Type. * * @param string $ post_type Тип на публикацията. * @param WP_Post_Type $ post_type_object Аргументи, използвани за регистриране на типа публикация. * / do_action ("registered_post_type", $ post_type, $ post_type_object); връщане на $ post_type_object; )

В днешния урок ще се запознаем с понятието персонализиран тип публикация, а също така научете как да създадете свой собствен персонал тип публикацияи шаблон за него. Персонализиран тип публикациятова е едно от основните направления в WordPressс които работят разработчиците.

V WordPress-eпубликациите и страниците в блога са всичко тип публикацияи за да разшири функционалността, разработчикът трябва да добави нови тип публикация... Например, имате уебсайт за продажба на книги, няма да публикувате тези книги като публикации в блогове. За да направите това, ще създадете нов тип публикациясъс заглавието "Книга", който ще има собствен външен вид, собствен шаблон и свои настройки.

Днес ще създадем нашата тип публикацияозаглавен "Книга"който ще има персонализиран шаблон за публичната публикация и за страницата на архива. Нека първо да разгледаме документацията WordPress - Кодекс / Тип пост... Първо, кодът изброява всички имена (Типове публикации по подразбиране)които не можем да използваме, когато регистрираме нови имена на публикации.

За създаване на персонализирани публикации в WordPressима специална функция - register_post_type ()... Нека да разгледаме примера по-долу.

Функция тип_пост_регистрсвързва се към ядрото WordPressизползване на друга функция кука - add_action... Куката е кука, с която закачаме нашата функция към ядрото. WordPress, който при инициализиране на функциите си добавя нашите.

Нека се опитаме да регистрираме нашите тип публикация, копирайте частта от кода от примера по-горе и го поставете във файла функция.php, стартиране на темата Долна черта, който инсталирахме в миналия урок и извикахме моя_тема- „Файлове на тема на Wordpress“. Това може да стане чрез административния панел WordPressв темата, Външен вид / Редактор, отворете файла функция.phpи поставете кода от кода в долната част на документа.

Нека разгледаме по-отблизо този код. WordPressрегистри тип публикацияизползвайки функцията тип_пост_регистр... Параметрите се предават в скоби, първият параметър acme_product- това е документ за самоличностнов тип публикация, която променяме в нашата Книга.

Register_post_type ("книга",

Следва параметъра, който тази функция получава, това е масив от настройки, в примера има само три от тях, а в документацията има много повече. Преименувайте "продукти"На "книги", а "продукт"На "Книга".

масив (
"етикети" => масив (
"name" => __ ("книги"),
"singular_name" => __ ("книга")
),

Обществениозначава, че публикацията е публична, всички я виждат и отива в архива has_archive.

"public" => вярно,
"has_archive" => вярно,
)

Не пропускайте да пишете коментари над кода, какъв код е, за да не се забравите защо сте го сложили там.

/**
* Персонализиран код за моя блог.
*/

Запазете публикацията, отидете на администраторската конзола и вижте нов тип публикация Книга, обаче е с минимално количество настройки.

На страницата на кодекса ще видите пълен списък с настройки. Трябва да добавим възможността за добавяне на изображение за преглед, да предадем параметъра в масива "миниатюра"... Освен това нека го върнем обратно заглавиеи редактор.

"supports" => масив ("заглавие", "редактор", "миниатюра"),

По същия начин можете да добавите други настройки от документацията. Препоръчва се за персонализирани заглавия, включително тип публикацияприлагат префикси (моята книга)за да избегнете конфликти с други плъгини, защото имената може да са еднакви. За да се избегнат грешки WordPressпрепоръчва всички ваши разработени функции, променливи, документ за самоличност, класовете и константите трябва да се пишат с префикси.

Персонализиран шаблон за нов тип публикация

Нека създадем две публикации в нов тип публикация Книгасъс заглавия книга 1и книга 2и отворете сайта на адрес http://my_blog.com/book/.

Виждаме, че създаденото книга тип публикация, а не по подразбиране тип публикация WordPressно старата все пак е заредена archive.php, и трябва да създадем свой собствен, вместо по подразбиране. Искаме книгите да не са в блог публикации, а да изглеждат различно, без типичната блогова структура. Нека създадем празен файл archive-book.phpи свържете шапка към него,

get_header ();
?>

get_footer ();
?>

и направете изхода на съдържанието в цикъл, като копирате кода от секцията за документация Post_Typesподмяна "продукт"На "Книга".

$ args = масив ("post_type" => "книга", "posts_per_page" => 10);
$ цикъл = нов WP_Query ($ args);
while ($ loop-> have_posts ()): $ loop-> the_post ();
заглавието ();
ехо"

";
съдържанието ();
ехо"
";
крайно време;
?>

Същото действие трябва да се направи и за файла single.php.

Общоизвестно е, че съдържанието е основният компонент на всеки уебсайт. WordPress предлага няколко типа съдържание по подразбиране, насочено повече към блог или новинарска ориентация. Въпреки това, за да създадете сайтове с различна, нестандартна структура (например онлайн магазини или сайтове, които предоставят някакви услуги), трябва да създадете свои собствени типове, които отговарят на посочените критерии, добавяйки гъвкавост за по-нататъшно разширяване на ресурса.

Какви са персонализираните типове публикации в WordPress?

Цялото съдържание на сайта се съхранява и показва от "двигателя" под формата на така наречените записи, всеки от които принадлежи към определен тип. Например, Страницае от типа публикация “ страница„И публикацията в блога е“ пост“. Това са стандартни типове данни на WordPress, които вече присъстват в прясно инсталирано копие на двигателя. Произволният тип е ръчно генериран нов тип съдържание. Към момента на обявяването му в системата ще бъде регистриран нов вид записи. Ето примери за случаи, когато е необходимо да се създаде произволен тип данни:

  • Книги (книги),
  • организации
  • хора
  • продукти
  • Места и др.

Защо да създадете свой собствен тип публикация в WordPress?

Създаването на свой собствен тип публикация ще ви позволи да въвеждате и показвате съдържание на сайта по начин, който е необходим, специфичен за тази информация. В допълнение, персонализираният тип данни ще ви позволи да съхранявате всякакъв тип информация в базата данни на WordPress.

Кога си струва да създадете персонализиран тип публикация?

Обикновено трябва да създадете персонализиран тип публикация за съдържание, което не отговаря на вградените типове публикации ( Записии Страници). Освен това новият тип ще ви позволи да добавите необходимите опции към записите (например имена, адреси, телефонни номера и т.н.)

Плъгини за работа с персонализирани типове публикации

Персонализирани (нестандартни) типове публикации в WordPress могат да бъдат създадени по два начина: с помощта на плъгин или ръчно. Последният метод е най-отнемащ време, тъй като осигурява добра готовност на потребителя в езиците за програмиране. Ще разгледаме по-лесен вариант, който решава същия проблем, но с по-опростен метод – през администраторския интерфейс, без да се изискват никакви познания по програмиране. За целта са разработени специални плъгини, които се прилагат успешно. Нека се запознаем с най-популярните от тях.

Приставка за потребителски интерфейс за тип публикация

Добавката Custom Post Type UI предоставя на потребителя прост и интуитивен интерфейс за създаване и управление на персонализирани типове данни в WordPress. Сред основните му предимства са:

  • възможността за добавяне на произволни типове към вградени или други ръчно създадени такива;
  • поддръжка за различни опции за редактора на публикации;
  • наличието на отделен списък с типове публикации, създадени чрез приставката.

плъгин Персонализиран потребителски интерфейс за тип публикациясъщо има недостатъци, особено за начинаещ потребител на WordPress:

  • типове публикации, създадени чрез приставката, ще трябва да се добавят ръчно към темите;
  • доста оскъдно описание на възможностите;
  • невъзможност за добавяне на персонализирани полета.

Приставка за типове набор от инструменти

Плъгинът Toolset Types, за разлика от предишния, ще ви позволи да добавяте персонализирани полета и таксономии (категоризация). Сред основните му характеристики:

  • поддръжка за разширени функции на произволни типове;
  • възможността за контрол на достъпа до полета, които потребителите могат да редактират и преглеждат;
  • наличието на подсказки за сложни функции;
  • способността за създаване на взаимоотношения родител-дете между всякакви видове;
  • наличие на възможност за експорт/импорт на данни за плъгини;
  • многоезичие;
  • възможността да се повтарят всички полета.

Значителен недостатък на приставката, особено за начинаещи потребители, е неудобството при работа, тъй като персонализираните типове публикации и персонализирани полета са представени на различни екрани на административния панел.

Плъгин за създаване на персонализирани типове публикации и персонализирани полета - WCK

WCK Custom Post Type Creator е друг плъгин за създаване и управление на персонализирани типове публикации в WordPress, осигуряващ удобен и интуитивен интерфейс. Плюсове на добавката:

  • простота и яснота на интерфейса;
  • възможността за създаване и поддръжка на персонализирани типове публикации, таксономии и персонализирани полета, както и мета-полета за публикации, страници и персонализирани типове публикации;
  • наличие на ръководство за бърз старт.

Персонализирана плъгин за създаване на тип публикации

Custom Post Type Maker е плъгин за WordPress, който ви позволява да създавате персонализирани типове публикации и таксономии с максимално удобство за потребителя. Решението е напълно интегрирано с WordPress APIи осигурява поддръжка за почти всички параметри Персонализиран API за тип публикация... Има редица предимства:

  • наличието на добре обмислен интерфейс с отделни секции Видове публикациии Таксономии;
  • наличието на интерфейс за управление на произволни типове публикации като обикновени публикации и страници;
  • предоставя всички необходими възможности за създаване и управление на персонализирани типове публикации;
  • предоставя възможност за настройка на почти всички параметри Персонализиран API за тип публикация.

Сред недостатъците на приставката е липсата на възможност за показване на персонализирани типове публикации и таксономии.

CPT-onomies плъгин

CPT-onomies е персонализиран плъгин тип публикация, съвместим с мултисайт на WordPress. Позволява ви да създавате мощни таксономии и връзки между публикациите. Сред предимствата са:

  • възможността за използване на таксономии;
  • способността за създаване на връзки между записи;
  • поддръжка за регистриране на други персонализирани типове публикации, създадени от WordPress плъгини и теми;
  • пълна многосайтова поддръжка. Възможно е да регистрирате персонализирани типове публикации и таксономии в цялата мрежа или само за конкретни сайтове.

Плъгинът не е актуализиран от дълго време, така че не е толкова популярен сред потребителите на WordPress.

Плъгин за персонализиран тип публикация MB

Плъгинът MB Custom Post Type ви позволява да създавате персонализирани типове публикации и таксономии, което ги прави лесни за управление благодарение на интуитивен интерфейс. Сред предимствата на добавката са следните:

  • поддръжка за всички типове аргументи пост;
  • лекота на използване;
  • поддръжка за режим на редактиране на живо, който автоматично попълва всички необходими етикети;
  • поддръжка за импортиране/експортиране на създадени типове публикации;
  • възможността за разширяване на функционалността с помощта на добавки.

За работа MB Персонализиран тип публикацияизисква инсталиране на приставката Meta Box.

Персонализиран плъгин за генериране на тип публикации

Custom Post Type Generator е просто и лесно решение, което ви позволява да генерирате персонализирани типове публикации от таблото за управление на WordPress. Плъгинът предоставя:

  • прост интерфейс;
  • възможност за генериране PHP-код за включване на персонализирани типове публикации и таксономии в теми и плъгини;
  • отделен изход на персонализирани типове публикации, вградени типове и типове, поддържани от темата.

Недостатък Персонализиран генератор на тип публикациие липсата на показване на регистрирани типове публикации и таксономии в списъка с обекти за редактиране.

Plugin Pods - Персонализирани типове съдържание и полета

С плъгина Pods можете да създавате почти всеки тип съдържание, независимо от неговата сложност. Благодарение на лесния за потребителя интерфейс можете лесно да управлявате персонализирани полета и типове съдържание. Предимства на решението:

  • ясен интерфейс;
  • наличието на голям брой опции;
  • възможността за създаване на персонализирани типове публикации, персонализирани таксономии, страници с настройки и т.н.
  • възможността за добавяне на персонализирани полета към персонализирани таксономии;
  • създаване на разширени типове съдържание, които ще използват свои собствени таблици в базата данни;
  • възможността за разширяване на съществуващите типове съдържание като типове публикации, таксономии, медии, потребители, коментари.

Единственият недостатък подсе труден за начинаещ потребител на WordPress, като се има предвид обширната документация.

В нашата статия за създаване и използване на персонализирани типове публикации ние разгледахме основите на персонализираните персонализирани типове публикации в Wordpress и се опитахме да започнем да работим по създаването на персонализирани типове публикации. Ние също така подчертахме начините за поддържане на модулност чрез използване на отделен PHP файл, който ни позволява да мигрираме типове публикации от шаблон към шаблон.

Днес искаме да ви разкажем за процеса на създаване на таксономия за вашите собствени типове публикации, както и за създаване на ваши собствени полета и мета-блокове, запазване на данни и използването им във вашите собствени шаблони за Wordpress.

Да започваме!

Създаване на таксономия (за да можете да сортирате по категория)

Следващата стъпка в нашия урок ще бъде създаването на таксономии, които ни позволяват да сортираме собствените си типове публикации в категории. По отношение на ефективността това е приблизително същото като категориите за публикации, с изключение на това, че можем да направим каквото си поискаме от тях само с няколко реда код.

За това ще използваме функцията Wordpress. Както можете да видите по-долу и в codex.wordpress.org, аргументите, които приема са таксономия, последвани от типа обект и накрая $ args. За нашия пример създадохме 2 таксономии – умения и клубно ниво. Прилагаме таксономии към типа публикация на атлета и след това задаваме аргументи, включително преки пътища, и привилегии за презаписване. Нека да разгледаме кода.

Register_taxonomy ("Спорт", масив ("атлет"), масив ("йерархичен" => true, "label" => "Спорт", "singular_label" => "Спорт", "rewrite" => true));
register_taxonomy ("Клубно ниво", масив ("атлет"), масив ("йерархичен" => true, "label" => "Клубно ниво", "singular_label" => "Клубно ниво", "rewrite" => вярно) );
Регистрираните таксономии изглеждат по следния начин.

Можете да кликнете върху типа на публикацията и ще бъдете пренасочени към страница, много подобна на страница с категория, където можете да добавите свои собствени таксономии.

Вече завършен?

Хм, по принцип вече имате свой собствен тип публикация, която работи. Но в момента не се различава от обикновените записи. Нека се потопим в създаването на персонализирани полета за вашите публикации, които ви позволяват да посочите уникална информация и след това да я покажете в шаблони.

Създаване на собствени полета

За да започнете да правите истинската магия с вашите персонализирани типове публикации, първо трябва да инициализирате функция, за да можете да добавяте мета полета. Ще извикаме нашия admin_init () и ще изглежда така:

Add_action ("admin_init", "admin_init");

функция admin_init () (
add_meta_box ("personal_info", "Personal Info", "personal_info", "athlete", "normal", "low");
}
Първата част от нашия код инициализира функцията admin_init (). Ясно е, че втората част на този код е самата функция. По принцип този код казва на вашия шаблон да създаде ново мета поле, наречено "Лична информация", да го постави в типа публикация за спортист и след това да му даде нисък приоритет (местоположение в типа публикация).

Готино! Готови ли сме сега?

Все още не. Но вече много близо! Нека добавим още няколко персонализирани полета. Това е по-подходящо за HTML, отколкото за PHP.

Създайте полета във вашите собствени мета полета

И сега забавлението започва. Ще създадем мета блок с лични данни (вече го направихме по-горе и сега ще го попълним), който ще попита името и фамилията на лицето, пола, имейл адреса, телефонния номер и датата на раждане.

За да направите това, създаваме функция, наречена personal_info (). Същата функция, която извикахме във функцията admin_init (). Сега, запали светлината? Всички линии се сближават.

Категориите по подразбиране се използват само за публикации. Въпреки това, в някои сценарии може да искате да ги използвате с персонализиран тип публикация. В тази статия ще ви покажем как можете да направите това.

Метод на плъгин

За потребители за първи път препоръчваме да използвате приставката за потребителски интерфейс за тип публикация, за да създадете персонализиран тип публикация. Използвайки този плъгин, имате възможността да свържете персонализиран тип публикация с всяка вградена или персонализирана таксономия, включително категории. След като инсталирате приставката, отидете на CPT UI »Добавяне/Редактиране на типове публикации, за да създадете нов персонализиран тип публикация или да редактирате съществуващ.

Превъртете надолу до Разширени опции и там ще видите опцията Built in Taxnomies. Поставете отметка в квадратчето до категориите и запазете типа на публикацията си.

Ръчно добавяне на категории за персонализиран тип публикация

Ако сте създали персонализиран тип публикация, като добавите код към вашия файл functions.php, тогава ще трябва да модифицирате този код, за да добавите категорията като поддържана таксономия. Всичко, което трябва да направите, е да добавите този ред към вашите персонализирани аргументи за тип публикация:

„Таксономии“ => масив („категория“),

Възможно е вече да имате този ред в кода си с друга персонализирана таксономия. Ако е така, тогава просто трябва да добавите запетая след него и да добавите категория:

„Таксономии“ => масив („теми“, „категория“),

Ето пример за цял код, където създадохме персонализиран тип публикация, наречен "филми", с поддръжка за всички вградени категории.

Функция custom_post_type () (// Задаване на етикети на потребителския интерфейс за персонализиран тип публикация $ labels = array ("name" => _x ("Films", "Post Type General Name", "twentythirteen"), "singular_name" => _x (" Филм "," Тип на публикацията, единствено число "," двадесет и тринадесет ")," menu_name "=> __ (" Филми "," двадесет и тринадесет ")," parent_item_colon "=> __ (" Родителски филм "," двадесет и тринадесет ")," all_items "=> __ (" Всички филми "," двадесет и тринадесет ")," view_item "=> __ (" Преглед на филм "," двадесет и тринадесет ")," add_new_item "=> __ (" Добавяне на нов филм "," двадесет и тринадесет "), "add_new" => __ ("Add New", "twentythirteen"), "edit_item" => __ ("Редактиране на филм", "twentythirteen"), "update_item" => __ ("Update Movie", "twentythirteen") , "search_items" => __ ("Търсене на филм", "twentythirteen"), "not_found" => __ ("Не е намерено", "twentythirteen"), "not_found_in_trash" => __ ("Не е намерено в кошчето", " twentythirteen "),); // Задайте други опции за персонализиран тип публикация $ args = array (" label "=> __ (" филми "," twentythirteen ")," описание "=> __ (" Новини и рецензии на филми ", "двадесет и тринадесет" ), "labels" => $ labels, "supports" => масив ("заглавие", "редактор", "извадка", "автор", "миниатюра", "коментари", "ревизии", "персонализирани полета" ,), "hierarchical" => false, "public" => true, "show_ui" => true, "show_in_menu" => true, "show_in_nav_menus" => true, "show_in_admin_bar" => true, "menu_position" => 5, "can_export" => true, "has_archive" => true, "exclude_from_search" => false, "publicly_queryable" => true, "capability_type" => "page", // Това е мястото, където добавяме таксономии към нашия CPT "таксономии" => масив ("категория"),); // Регистриране на вашия персонализиран тип публикация register_post_type ("филми", $ args); ) / * Включете действието "init", така че функцията *, съдържаща регистрация на нашия тип публикация, да не бъде * ненужно изпълнена. * / add_action ("init", "custom_post_type", 0);

Показване на няколко типа публикации на страница с категория

По подразбиране страниците с категории в сайт на WordPress показват стандартния тип публикация. Ако искате вашият тип публикация да се показва на същата страница с категории като публикациите по подразбиране, тогава трябва да добавите следния код към файла functions.php:

Add_filter ("pre_get_posts", "query_post_type"); функция query_post_type ($ query) (if (is_category ()) ($ post_type = get_query_var ("post_type"); if ($ post_type) $ post_type = $ post_type; иначе $ post_type = array ("nav_menu_item", "post", " филми "); // не забравяйте nav_menu_item, за да позволите на менютата да работят! $ query-> set ("post_type", $ post_type); върнете $ query;))

Не забравяйте да промените филмите с името на вашия персонализиран тип публикация.

Нашата специалност е разработването и поддръжката на WordPress сайтове. Контакти за безплатна консултация -,