Лучшие WordPress-плагины для работы с произвольными типами записей. Полное руководство по пользовательским типам постов в WordPress Непорочный post type


Создаем кастомный тип записи (Custom Post Type) Articles с кастомными категориями (Custom Taxonomy) Articles Category .

В моем случае все стандартные записи – это Товары, поэтому Статьи выведем через кастомные записи.

В файле функций functions.php регистрируем кастомный тип записи Articles:

Function wptp_create_post_type() { $labels = array("name" => __("Articles"), "singular_name" => __("Articles"), "add_new" => __("New Article"), "add_new_item" => __("Add New Article"), "edit_item" => __("Edit Article"), "new_item" => __("New Article"), "view_item" => __("View Article"), "search_items" => __("Search Articles"), "not_found" => __("No Articles Found"), "not_found_in_trash" => __("No Articles found in Trash"),); $args = array("labels" => $labels, "has_archive" => true, "public" => true, "hierarchical" => false, "menu_position" => 5, "supports" => array("title", "editor", "excerpt", "custom-fields", "thumbnail"),); register_post_type("articles", $args); } add_action("init", "wptp_create_post_type");

Если вы хотите, чтобы в кастомных постах выводились стандартные категории, тогда привяжите их к таксономии Категорий:

"taxonomies" => array("category"),

Если для кастомных постов вы создаете еще и кастомные таксономии, то связывать их надо с созданными таксономиями, если брать пример ниже, то это будут articles_category

"taxonomies" => array("articles_category"),

Затем для кастомного типа записи Articles регистрируем таксономии ‘Article Category’, чтобы разные записи могли принадлежать разным категориям.

Function wptp_register_taxonomy() { register_taxonomy("articles_category", "articles", array("labels" => array("name" => "Article Categories", "singular_name" => "Article Category", "search_items" => "Search Article Categories", "all_items" => "All Article Categories", "edit_item" => "Edit Article Categories", "update_item" => "Update Article Category", "add_new_item" => "Add New Article Category", "new_item_name" => "New Article Category Name", "menu_name" => "Article Category",), "hierarchical" => true, "sort" => true, "args" => array("orderby" => "term_order"), "show_admin_column" => true)); } add_action("init", "wptp_register_taxonomy");

Для кастомной таксономии можно изменить слаг на более красивый, чтобы он не был articles_category , но нужно учесть, чтобы таких слдагов больше не было на других страницах или постах, иначе будут проблемы:

"rewrite" => array("slug" => "blog"),

При изменении слагов необходимо обновить настройки “Постоянных ссылок” в админке, иначе будете получать 404 ошибку вместо нужной страницы.

Больше примеров можно найти и . Но привести весь этот код в порядок помогла , за что автору большая благодарность.

За внешний вид кастомной записи отвечает файл single.php , но чтобы изменить вид кастомной записи можно создать файл single-{post_type}.php – в моем случае будет single-articles.php со своим содержимым.

Теперь нужно вывести кастомные записи на странице. По умолчанию за отображение архива кастомных записей отвечает файл index.php . Но можно создать файл, который будет отвечать за вывод кастомных записей в своей таксономии.

Вариант 1 – самый правильный. Выводим записи в таксономии так же как и в обычной категории.

Для этого создаем файл taxonomy-{taxonomy}.php – в моем случае будет taxonomy-articles_category.php и в нем выводим обычный цикл, как и для стандартных записей в категории:

В файле tax-item.php выводим данные, которые нам нужно получить из каждой записи, например, заголовок, ссылку на запись, миниатюру и excerpt.

В файле pagination.php выводим пагинацию вот такого формата .

Цикл не изменяем, пагинация отлично работает. Это самый оптимальный вариант для отображения Кастомных Таксономий.

Вариант 2 – если нет кастомных таксономий, то можно просто получить все кастомные записи в виде Архива

Для этого в шаблоне создаем файл archive-{post_type}.php – в моем случае будет archive-articles.php , в котором точно так же как и в таксономии выводим обычный цикл, только вместо заголовка Таксономии выводим имя кастомного типа записи :

При этом варианте, если не создана страница архива для кастомной записи, тогда получить список всех кастомных записей можно по прямой ссылке BLOG_URL?post_type={post_type} или в моем случае http://site.com/articles/ .

Вариант 3. Просто выводим все кастомные записи Articles на странице с заданным шаблоном

"articles", "posts_per_page" => -1); $loop = new WP_Query($args); while ($loop->have_posts()) : $loop->the_post(); get_template_part("include/tax-item"); endwhile; ?>

get_template_part("include/tax-item"); – в файле tax-item.php я вывожу содержимое записи, которое нужно мне для отображения записей внутри цикла (заголовок, миниатюру, дату, цитату и т.д.)

Этот вариант выводит все записи Articles на странице, не зависимо от таксономий (категорий).

А если нам нужно вывести каждую категорию отдельно со своими новостями, тогда используем первый вариант, описанный выше.

При этом, если вы используете плагин Yoast SEO и используете его хлебные крошки:

Тогда при выборе в настройках плагина таксономии “Articles Category” в “Taxonomy to show in breadcrumbs for post types”, в хлебных крошках вы получите ссылку на категорию, к которой принадлежит Новость, при других вариантах вывода кастомных записей это не получалось сделать.

На сегодняшнем уроке мы познакомимся с понятием custom post type , а также научимся создавать свой кастомный post type и шаблон для него. Custom post type это одно из основных направлений в WordPress , с которым работают разработчики.

В WordPress-е блоге посты и страницы - все это post type и чтобы расширить функционал, разработчику нужно добавлять новые post type . Например у вас сайт для продажи книг, вы же не будете публиковать эти книги, как блог-посты. Для этого вы создадите новый post type с названием "book" , у которого будет свой внешний вид, свой шаблон и свои настройки.

Сегодня мы создадим свой post type под названием "book" , который будет иметь кастомный шаблон для публичного поста и для страницы с архивами. Давайте сначала ознакомимся с документацией WordPress - Codex/Post Type . Первым делом в кодексе перечислены все названия в (Default Post Types) , которые мы не можем использовать при регистрации новых названий постов.

Для создания кастомных постов в WordPress существует специальная функция - register_post_type() . Разберем на примере ниже.

Функция register_post_type подключается к ядру WordPress-а при помощи другой функции-хука - add_action . Хук это крючок, за который мы цепляем нашу функцию к ядру WordPress , который при инициализации своих функций, добавляет и нашу.

Давайте попробуем зарегистрировать наш post type , скопируем кусок кода из примера выше и вставим его в файл function.php , стартовой темы underscore , которую мы установили на прошлом уроке и назвали my_theme - "Файлы темы Wordpress" . Сделать это можно через админку WordPress-а в теме, Внешний вид / Редактор , открываете файл function.php и вставляете код из кодекса внизу документа.

Разберем подробнее этот код. WordPress регистрирует post type при помощи функции register_post_type . В круглых скобках передаются параметры, первый параметр acme_product - это id нового типа поста, который мы меняем на свой book .

Register_post_type("book",

За ним идет параметр, который получает эта функция, это массив настроек, в примере их всего три, а в документации гораздо больше. Переименуем "Products" на "books" , а "Product" на "book" .

Array(
"labels" => array(
"name" => __("books"),
"singular_name" => __("book")
),

Public означает, что пост публичный, его видят все и он попадает в архив has_archive .

"public" => true,
"has_archive" => true,
)

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

/**
* My blog custome code.
*/

Сохраняем пост идем в консоль админки и видим новый тип поста book , однако он с минимальным количеством настроек.

На странице codex вы увидите полный список настроек. Нам надо добавить возможность добавления превью-картинки, передадим в массиве параметр "thumbnail" . Кроме того, вернем назад title и editor .

"supports" => array("title", "editor", "thumbnail"),

Точно так же можно добавлять и другие настройки из документации. Рекомендуется для пользовательских названий, в том числе и для post type применять префиксы (my_book) , чтобы избежать конфликта с другими плагинами, ведь названия могут совпасть. Для избежания ошибок WordPress рекомендует все вами разработанные функции, переменные, id , классы и константы прописывать с префиксами.

Кастомный шаблон для нового post type

Создадим два поста в новом типе записей book с названиями Book 1 и Book 2 и откроем сайт по адресу http://my_blog.com/book/.

Мы видим, что загрузился нами созданный post type book , а не дефолтный post type WordPress-а , но загружаются все равно старый archive.php , а нам надо создать свой, вместо дефолтного. Мы хотим, чтобы книги не находились в блог постах, а выглядели иначе, без типичной блоговой структуры. Создадим пустой файл archive-book.php и подключим к нему шапку,

get_header();
?>

get_footer();
?>

и сделаем вывод контента в цикле, скопировав код из раздела документации Post_Types , заменив "product" на "book" .

$args = array("post_type" => "book", "posts_per_page" => 10);
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post();
the_title();
echo "

";
the_content();
echo "
";
endwhile;
?>

Аналогичный действия надо сделать и для файла single.php .

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

Что такое произвольные типы записей в WordPress?

Весь контент сайта “движок” хранит и выводит в виде так называемых записей, каждая из которых относится к определенному типу. Например, Страница относится к типу записей “page ”, а блоговый пост – “post ”. Это стандартные типы данных WordPress, которые уже присутствуют в свежеустановленной копии “движка”. Произвольный же тип – это сгенерированный вручную новый тип контента. В момент его объявления в системе будет зарегистрирован новый тип записей. Приведем примеры случаев, когда необходимо создавать произвольный тип данных:

  • Books (книги),
  • Organizations (организации),
  • People (люди),
  • Products (продукты),
  • Places (места) и др.

Зачем создавать свой тип записей WordPress?

Создание своего типа записей позволит вводить и показывать на сайте контент нужным, специфичным для этой информации, образом. Кроме того, собственный тип данных позволит хранить в базе данных WordPress любой тип информации.

В каких случаях стоит создавать произвольный тип записей?

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

Плагины для работы с произвольными типами записей

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

Плагин Custom Post Type UI

Дополнение Custom Post Type UI обеспечивает пользователю простой и понятный интерфейс для создания и управления произвольными типами данных в WordPress. Среди основных его преимуществ можно выделить:

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

Плагин Custom Post Type UI также имеет негативные стороны, особенно для начинающего WordPress-пользователя:

  • созданные через плагин типы записей придется вручную добавлять в темы;
  • довольно скудное описание возможностей;
  • отсутствие возможности добавления произвольных полей.

Плагин Toolset Types

Плагин Toolset Types , в отличии от предыдущего, позволит Вам добавить произвольные поля и таксономии (категоризацию). Среди его основных возможностей:

  • поддержка расширенных возможностей произвольных типов;
  • возможность управления доступом к полям, которые могут редактировать и просматривать пользователи;
  • наличие всплывающих подсказок по сложным возможностям;
  • возможность создания отношений “родительский – дочерний элементы” между любыми типами;
  • присутствие возможности экспорта/импорта для данных плагина;
  • мультиязычность;
  • возможность повторения всех полей.

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

Плагин Custom Post Types and Custom Fields creator – WCK

WCK Custom Post Type Creator – очередной плагин для создания и управления произвольными типами записей WordPress, обеспечивающий удобный и понятный интерфейс. Плюсы дополнения:

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

Плагин Custom Post Type Maker

Custom Post Type Maker – WordPress-плагин, позволяющий создавать произвольные типы записей и таксономии с максимальным удобством для пользователя. Решение полностью интегрировано с WordPress API и обеспечивает поддержку практически всех параметров Custom Post Type API . Имеет ряд преимуществ:

  • наличие продуманного интерфейса с отдельными секциями Post Types и Taxonomies ;
  • присутствие интерфейса для управления произвольными типами записей, такими как обычные записи и страницы;
  • предоставляет все необходимые возможности для создания и управления произвольными типами записей;
  • обеспечивает возможность задавать практически все параметры Custom Post Type API .

Среди недостатков плагина можно выделить отсутствие возможности вывода произвольных типов записей и таксономий.

Плагин CPT-onomies

CPT-onomies – плагин для создания произвольных типов записей, совместимый с мультисайтами в WordPress. Позволяет создавать мощные таксономии и отношения между записями. Среди преимуществ можно выделить:

  • возможность использования таксономий;
  • возможность создания отношений между записями;
  • поддержка регистрации других произвольных типов записей, создаваемых плагинами и темами WordPress;
  • полная поддержка мультисайтов. Есть возможность регистрации произвольных типов записей и таксономий по всей сети или только для определенных сайтов.

Плагин давно не обновлялся, поэтому не так популярен между WordPress-пользователями.

Плагин MB Custom Post Type

Плагин MB Custom Post Type позволяет создавать произвольные типы записей и таксономии, обеспечивая легкое управление ими, благодаря понятному интерфейсу. Среди плюсов дополнения можно выделить следующие:

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

Для работы MB Custom Post Type необходима установка плагина Meta Box .

Плагин Custom Post Type Generator

Custom Post Type Generator – простое и понятное решение, позволяющее генерировать произвольные типы записей из консоли WordPress. Плагин обеспечивает:

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

Недостатком Custom Post Type Generator является отсутствие вывода зарегистрированных типов записей и таксономий в списке редактируемых объектов.

Плагин Pods – Custom Content Types and Fields

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

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

Единственным минусом Pods является сложность для начинающего WordPress-пользователя, учитывая наличие подробной документации.

$post_type (строка ) то, как вы хотите назвать свой тип поста, это название в дальнейшем будет использоваться в параметрах многих функций, учтите это. Кроме того, нельзя использовать в качестве названий следующие зарезервированные вордпрессом слова:

  • attachment
  • revision
  • nav_menu_item
  • custom_css
  • customize_changeset
  • action
  • order
  • theme
  • author
$args (массив ) включает в себя следующие параметры: labels (массив ) позволяет подписать элементы интерфейса данного типа записи. Подробнее в примере в конце поста. description (строка ) описание регистрируемого типа записей. Насколько мне известно, этот параметр не используется где-либо в движке WordPress или в стандартных плагинах и темах. Но вполне может использоваться в сторонних плагинах или темах. public (логическое ) обобщает следующие несколько параметров, устанавливая для них соответствующие значения по умолчанию publicly_queryable (логическое ) нужно ли элементы данного типа записей сделать доступными на сайте. Подробнее про задачу этого параметра .
По умолчанию: значение аргумента public . exclude_from_search (логическое )
  • true — исключить записи данного типа из результатов поиска на сайте,
  • false — не исключать.

По умолчанию: противоположные значения параметра public . show_in_nav_menus (логическое ) нужно ли элементы данного типа записей сделать доступными для добавления в меню сайта.
По умолчанию: значение аргумента public . show_ui (логическое ) нужно ли добавлять стандартный интерфейс в админке для редактирования и добавления записей данного типа.
По умолчанию: значение аргумента public .

Show_in_menu (логическое |строка ) нужно ли добавлять пункты в меню админки.

По умолчанию: значение аргумента show_ui . show_in_admin_bar (логическое ) нужно ли добавлять ссылку на создание новой записи данного типа в админ панель.

По умолчанию: значение аргумента show_in_menu . menu_position (целое число ) порядок расположения в меню в админке.

menu_icon (строка ) абсолютный URL иконки для меню. Оптимальное разрешение изображения 16×16 пикселей.

Кроме того, в WordPress 3.8 появился встроенный пакет иконок — вы можете использовать любую из этих иконок, просто указав её название в качестве значения параметра, например dashicons-cart .

По умолчанию используется иконка обычных записей. delete_with_user (логическое ) при удалении пользователя на блоге, нужно ли автоматически удалять все записи данного типа, которые он опубликовал.
По умолчанию: false . hierarchical (логическое ) должен ли данный тип постов иметь иерархию.
По умолчанию: false . has_archive (логическое |строка ) должен ли данный тип постов иметь собственную страницу архивов. В качестве значения параметра можно указать ярлык страницы архивов.
По умолчанию: false . rewrite (массив |логическое ) устанавливает правила для постоянных ссылок в URL. Если в качестве значения данного параметра указать false , то правила для постоянных ссылок создаваться не будут.

Slug (строка ) ярлык, используемый для записей данного типа (по умолчанию — название типа поста) with_front (логическое ) нужно ли добавлять в постоянные ссылки значение $wp_rewite->front (по умолчанию — true) feeds (логическое ) нужно ли создавать RSS ленту для данного типа поста (по умолчанию — значение параметра has_archive) pages (логическое ) нужно ли разрешить постраничную навигацию в постах регистрируемого типа, используя тег (по умолчанию — true) supports (массив ) какие нужно добавить на страницы редактирования записей данного типа.

  • title — поле для ввода заголовка поста
  • editor — текстовый редактор
  • excerpt — метабокс «Цитата»
  • author — метабокс «Автор»
  • thumbnail — метабокс «Миниатюра записи» (кроме того, ваша тема должна их поддерживать)
  • comments — метабокс «Комментарии» (если указано, то разрешены комментарии к постам регистрируемого типа)
  • trackbacks — метабокс «Отправить обратные ссылки»
  • custom-fields — метабокс «Произвольные поля» (произвольные поля будут поддерживаться в любом случае)
  • revisions — метабокс «Редакции» (если указано, то в базе данных будут создаваться редакции постов данного типа)
  • page-attributes — метабокс «Атрибуты страницы» с возможностью выбора родительского эоемента и установления порядка menu_order
  • post-formats — метабокс «Формат», про форматы постов читайте подробнее .
  • taxonomies (массив ) массив таксономий, например category или post_tag , которые будут использоваться для данного типа записей. Присвоить таксономии можно также при помощи функции .

    Пример регистрации типа поста

    Если не знаете, куда вставлять код — вставляйте в functions.php вашей текущей темы.

    add_action ( "init" , "true_register_products" ) ; // Использовать функцию только внутри хука init function true_register_products() { $labels = array ( "name" => "Товары" , "singular_name" => "Товар" , // админ панель Добавить->Функцию "add_new" => "Добавить товар" , "add_new_item" => "Добавить новый товар" , // заголовок тега </span> "edit_item" => <span>"Редактировать товар" </span>, "new_item" => "Новый товар" , "all_items" => "Все товары" , "view_item" => <span>"Просмотр товаров на сайте" </span>, "search_items" => "Искать товары" , "not_found" => <span>"Товаров не найдено." </span>, "not_found_in_trash" => <span>"В корзине нет товаров." </span>, "menu_name" => "Товары" <span>// ссылка в меню в админке </span> ) ; $args = array ( "labels" => $labels , "public" => true , <span>// благодаря этому некоторые параметры можно пропустить </span> "menu_icon" => "dashicons-cart" , <span>// иконка корзины </span> "menu_position" => 5 , "has_archive" => true , "supports" => array ( "title" , "editor" , "excerpt" , "thumbnail" , "comments" ) , "taxonomies" => array ("post_tag" ) ) ; register_post_type("product" ,$args ) ; } </td> </tr></table><p><span class="koXPsjWcBis"></span></p></ul> <p>Доброго времени суток, дорогие хабравчане, я уже много лет делаю сайты на wordpress и решил поделится своим опытом. Мне сильно порадовала новость ранее опубликованная aleksandrit , о том что "WordPress используется уже на более чем 50 миллионах сайтов ", это новость вдохновляет все больше изучать глубокие и <a href="/kak-na-androide-skryt-prilozhenie-sekrety-android-skrytye-vozmozhnosti-o-kotoryh/">скрытые возможности</a> Wordpress. Ранее подобная тема уже была опубликована bRuz ом но я бы хотел подойти к вопросу иначе, шаг за шагом.</p><p>И так начнем с очевидного.</p><h4>Зачем нужны custum post type</h4> Главная цель custum post type позволить разработчику организовать данные на сайте. например: если <a href="/planshety-samsung-galaxy-tab-s-8-4-esli-zhe-rech-idet-o-ego-hudshih-chertah-to-on-inogda-prosto/">речь идет</a> о блоге, то у нас есть несколько типов данных(записи, медиафайлы, страницы и ссылки). Но что делать тем у кого сайт посвящен? новинкам кино индустрии? подобному сайту понадобится такой тип записей как «Обзор», у обзора должны быть такие характеристики как: жанр, год выпуска, обложка, актеры и т.д… Использования custum post type в отличие от обычных записей, дает нам возможность использовать эти данные в шаблоне, а так же искать по определенным параметрам и сортировать. <h4>Начнем создавать</h4> Для того чтоб создать новый тип записи нам понадобится редактировать файл functions.php который находится в директории используемого шаблона.<p>Function create_post_type() { // создаем новый тип записи<br><br> array(<br> "labels" => array(<br> "name" => __("Обзоры"), // даем названия разделу, для панели управления<br> "singular_name" => __("Обзор") // даем названия одной записи<br>), <br> "public" => true, <br> "menu_position" => <br> "rewrite" => array("slug" => "reviews") // указываем slug для ссылок например: http://mysite/reviews/<br>); <br> } </p><p>И так что получилось, <br> Обратите внимания на то что в левой панели появилась вкладка обзоры.</p><p>Как мы видим на этой картинке у нас появились пару проблем. заголовок все еще остался таким «Добавить запись» и нету возможности добавить обложку. Попробуем это исправить, для этого нам понадобится добавить пару параметров (полный список параметров ищите в кодексе).<br> function create_post_type() { // создаем новый тип записи<br> register_post_type("reviews", // указываем названия типа<br> array(<br> "labels" => array(<br> "name" => __("Обзоры"), // даем названия разделу для панели управления<br> "singular_name" => __("Обзор"), // даем названия одной записи<br><b>"add_new" => _x("Добавить новый"),// далее полная русификация админ. панели<br> "add_new_item" => __("Добавить новый обзор"),<br> "edit_item" => __("Редактировать обзор"),<br> "new_item" => __("Новый обзор"),<br> "all_items" => __("Все обзоры"),<br> "view_item" => __("<a href="/programmy-dlya-prosmotra-cifrovogo-televideniya-obzor-alternativnogo/">Просмотр обзора</a>"),<br> "search_items" => __("Поиск обзора"),<br> "not_found" => __("Нет обзоров"),<br> "not_found_in_trash" => __("обзоры не найдены"), <br> "menu_name" => "Обзоры" </b><br>), <br> "public" => true, <br> "menu_position" => 5, // указываем место в левой баковой панели<br> "rewrite" => array("slug" => "reviews"), // указываем slug для ссылок например: http://mysite/reviews/<br><b> "supports" => array("title", "editor", "thumbnail", "revisions") </b>// тут мы активируем поддержку миниатюр <br>); <br> } </p><p>Add_action("init", "create_post_type"); // инициируем добавления типа</p><p>Результат:<br><br> И так, теперь мы полностью исправили русификацию и сделали возможным прикрепления миниатюр к нашему новому типу записи. теперь мы можем создать шаблон который будит показывать наши записи.</p><h4>Loop</h4> Если честно, мне приходят в голову два способа отображения нового типа записи. и так примеры:<br><b>Первый способ: </b> использовать шаблонный файл, допустим тип новой записи называется "reviews", в этом слачае мы создаем файл под названием archive-reviews.php для отображения множество записей и single-reviews.php для отображения одной записи (оффтоп. приятный пример иерархии всех шаблонов прекрасно отображён на данной инфограме) далее мы используем простой код итерации по записям:<br> <?php while (have_posts()) : the_post(); ?>стандартная итерация по массиву <br> the_title();// заголовок <br><br> echo "";<br> the_content();// запись <br> echo "";<br> endwhile;<p><b>Второй способ: </b> вызов лупа из любой части шаблона,<br> $args = array("post_type" => "reviews", "posts_per_page" => 10);//тут мы указываем на тип записи по которой желаем пройтись и количество записей на одной странице <br> $loop = new WP_Query($args);// получаем результат запроса в переменное loop<br> while ($loop->have_posts()) : $loop->the_post(); // далее стандартная итерация по массиву<br> the_title();// заголовок <br> php the_post_thumbnail(array(150,150)); //получаем миниатюру записи<br> echo "";<br> the_content();// запись <br> echo "";<br> endwhile;</p><p>Надеюсь вам понравилось и статья была полезной, все же первый пост. с появлением столь простого инструмента, wordpress стал полноценным cms хотя все еще позиционирует себя как блог.</p><p>В следующий раз я хотел бы раскрыть такую прекрасную функцию как Taxonomies и custom fields</p><p>Теги: wordpress, cms, разработка сайтов, wordpress 3.3</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> </div><div class="clear"></div> <script type="text/javascript"> document.getElementById('hc_full_comments').innerHTML = ''; </script><br /><br /><noindex><p align="center"><center> <div id="meta_news_block1111" style="text-align: center;"></div></center> </p> <br /><br /> <p align="center"> </p> </noindex> </div> </div> <div id="sidebar"> <div class="clear"></div><br /> <h2 class="front" style="margin:15px 0 5px 0">Популярные статьи</h2> <div class="tabcont"> <ol> <li><a href="/sposoby-vstavki-flash-v-html-i-xhtml-vstavka-flesh-kak-vstavit-fail-swf-v-wordpress/">Вставка флеш Как вставить файл swf в wordpress</a></li> <li><a href="/huavei-g630-u10-otkat-proshivki-proshivka-g630-u10-instrukciya/">Хуавей g630 u10 откат прошивки</a></li> <li><a href="/macbook-pro-kakoi-processor-novye-macbook-pro-desyat-faktov-touch-bar-rabotaet-na-watchos/">Новые MacBook Pro: десять фактов</a></li> <li><a href="/kak-zarabotat-bitkoiny-bez-vlozhenii-na-kompyutere-i-iphone-proverennye/">Как заработать биткоины на домашнем компьютере</a></li> <li><a href="/chto-delat-esli-nout-nagrevaetsya-i-vyklyuchaetsya-pochemu-noutbuk-vyklyuchaetsya-sam/">Почему ноутбук выключается сам по себе</a></li> </ol> </div> <h2 class="front" style="margin:15px 0 5px 0">Последние статьи</h2> <div class="tabcont"> <ol> <li><a href="/prilozheniya-na-tv-lg-prilozheniya-lg-smart-tv-kak-vse-eto-delat/">Приложения на тв lg. Приложения LG Smart TV. Как все это делать</a></li> <li><a href="/izmenenie-parolya-v-origin-kak-pomenyat-pochtu-v-origin-bez-znaniya/">Как поменять почту в Origin, без знания секретного вопроса Как изменить электронную почту в ориджин</a></li> <li><a href="/bagi-glyuki-lagi-vs-ploho-stellaris-lagaet-i-tormozit-kak-uvelichit-fps-kak/">Баги, глюки, лаги. Всё плохо. Stellaris лагает и тормозит? Как увеличить FPS? Как установить мод? Нет звука? Не работает мультиплеер? Баги не дают играть? Нет русского языка? — Решение проблем Stellaris вылетает при запуске</a></li> <li><a href="/alisa-otkroi-mne-kartu-opisanie-alice---selfie-beautify-camera-kak-polzovatsya-assistentkoi-alisa/">Описание Alice - Selfie Beautify Camera</a></li> <li><a href="/kak-stat-samym-luchshim-bloggerom-kak-blogeram-udaetsya-dobitsya/">Как блогерам удается добиться успеха</a></li> <li><a href="/besplatnaya-muzyka-v-telegram-kak-iskat-i-slushat-durov-ubivaet-vk-bot-v/">Бесплатная музыка в Telegram: как искать и слушать</a></li> <li><a href="/internet-s-wi-fi-routerom-v-vashei-kvartire-nastroika-wi-fi-routera-ot-netbynet-nastroika/">Настройка wi-fi роутера от Netbynet Настройка подключения к Интернет</a></li> </ol> </div> <div class="widget" id="ajdg_grpwidgets-3"> <div class="g g-9"> <div class="g-single a-27"> <script> jQuery(function() { window.onscroll = function() { height_scroll = jQuery(document).scrollTop(); height = jQuery(document).height(); height50 = height / 2; if (height_scroll >= height50) { jQuery("#site-code-block-22").fadeIn(1200); document.getElementById('site-code-block-22').style.display = 'block'; jQuery("#site-code-block-23").fadeOut(1200); document.getElementById('site-code-block-23').style.display = 'none'; } else { jQuery("#site-code-block-22").fadeOut(1200); document.getElementById('site-code-block-22').style.display = 'none'; document.getElementById('site-code-block-23').style.display = 'block'; jQuery("#site-code-block-23").fadeIn(1200); } }; }); </script> <div class="site-code-block prma-count" data-rel="cb_23" id="site-code-block-23" style=""> </div> <div class="site-code-block prma-count" data-rel="cb_22" id="site-code-block-22" style=""> </div> </div> </div> </div> <div class="clear"></div> <br /> <center> <div style="color: #333333; font-size: 11px;"> </div> </center> <div class="clear"></div> </div> <div class="clear"></div> </div> </div> </div> <br /><br /> <div id="footeri"> <div id="footer"> <div class="footer-sec"> <h6>Разделы</h6> <ul> <li><a href="/category/youtube/">Youtube</a></li> <li><a href="/category/facebook/">Facebook</a></li> <li><a href="/category/twitter/">Twitter</a></li> <li><a href="/category/tips/">Советы</a></li> <li><a href="/category/useful-tips/">Полезные советы</a></li> <br /> </ul> </div> <div class="footer-sec"> <h6>Страницы</h6> <ul> <li><a href="">О проекте</a></li> <noindex> <li><a href="" >RSS новости</a></li> </noindex> </ul><br /><br /><br /> <h6>Спецпроекты</h6> <ul> <li><a href="/feedback/">Связаться с нами</a></li> </ul> </div> <div id="footer-top"> <h6>Контакты</h6> <ul> <li><a href="">Реклама на сайте</a></li> <li><a href="/feedback/">Контакты</a></li> </div> <div class="clear"></div> </div></div> <div id="bottom"><div class="foot_col1"> 2024 © <a href="/">gtavrl.ru</a>. </div> <script type="text/javascript">var addthis_config = { "data_track_addressbar":true,"pubid": "ra-58b68bb0f1371607"} ;addthis_config.data_track_addressbar = false;addthis_config.data_track_clickback = false;</script> <script type='text/javascript'> var flag_hide = 0; function hide_direct() { flag_hide = 1; jQuery('#rek_mob_fixed').slideToggle( 'slow' ); var date = new Date(); var expires_hour = 21600000; date.setTime(date.getTime()+expires_hour); showSocial(); Cookies.set('advp_show_me', '1', { expires: date, path: '/'} ); } ; jQuery(function(f){ var element = f('#rek_mob_fixed'); element.delay(8000); f(window).scroll(function(){ if (flag_hide == 0){ var offset_element_for_hide = jQuery('#before_footer').val(); if (offset_element_for_hide != null) { offset_element_for_hide = jQuery('#before_footer'); offset_element_for_hide = jQuery(offset_element_for_hide).offset().top - jQuery(window).height(); } else { offset_element_for_hide = jQuery(document).height(); } //Если рекламный блок более 1000px по ширине, устанавливай фикс. ширину 1000px if (jQuery('#rek_mob_fixed_block').actual('width') >1000) { jQuery('#rek_mob_fixed_block').css({ 'max-width':'1000px'} ); } if(f(this).scrollTop() > 500){ element.fadeIn(0); } if(f(this).scrollTop() < 500 || f(this).scrollTop() > offset_element_for_hide ){ element.fadeOut(0) } if(f(this).scrollTop() + f(this).height() >= f(document).height() && flag_hide == 0 && jQuery('#rek_mob_fixed').is(':visible')) { jQuery('#rek_mob_fixed').slideToggle(100); } } } ); } ); function showSocial(){ if(flag_hide == 1 ) jQuery('#footer-share').slideToggle('slow'); } </script><div id="wondergridgallerylightbox_options" data-skinsfoldername="skins/default/" data-jsfolder="/wp-content/plugins/modesco-wonderplugin-gridgallery/engine/" style="display:none;"></div> <script type='text/javascript' src='https://gtavrl.ru/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=4.9.2'></script> <script type='text/javascript' src='https://gtavrl.ru/wp-content/plugins/modesco-monica/script.min.js?ver=4.9.1'></script> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "visibility_show":"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c","visibility_hide":"\u0441\u043a\u0440\u044b\u0442\u044c","width":"100%"} ; /* ]]> */ </script> <script type='text/javascript' src='https://gtavrl.ru/wp-content/plugins/modesco-table-of-contents-plus/front.js?ver=1404'></script> <script type='text/javascript' src='https://gtavrl.ru/wp-content/plugins/page-links-to/js/new-tab.min.js?ver=2.9.8'></script> <script type='text/javascript'> var q2w3_sidebar_options = new Array(); q2w3_sidebar_options[0] = { "sidebar" : "ads-sidebar", "margin_top" : 10, "margin_bottom" : 50, "stop_id" : "before_footer", "screen_max_width" : 0, "screen_max_height" : 0, "width_inherit" : false, "refresh_interval" : 1500, "window_load_hook" : false, "disable_mo_api" : false, "widgets" : ['ajdg_grpwidgets-3'] } ; </script> <script type='text/javascript' src='https://gtavrl.ru/wp-content/plugins/q2w3-fixed-widget/js/q2w3-fixed-widget.min.js?ver=5.0.4'></script> <script type='text/javascript' src='https://gtavrl.ru/wp-content/plugins/youtube-embed-plus/scripts/fitvids.min.js?ver=4.9.1'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.9.1'></script> <script type="text/javascript"> var _hcwp = _hcwp || []; var _hcobj = { widget_id : 29264, widget : "Bloggerstream",selector: '.hc_counter_comments',platform:"wordpress", } ; _hcwp.push(_hcobj); (function() { if("HC_LOAD_INIT" in window)return; HC_LOAD_INIT = true; var lang = "ru"; var hcc = document.createElement("script"); hcc.type = "text/javascript"; hcc.async = true; hcc.src = ("https:" == document.location.protocol ? "https" : "http")+"://w.hypercomments.com/widget/hc/29264/"+lang+"/widget.js"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hcc, s.nextSibling); } )(); </script> </body> </div> </body> </html>