Wordpress как привязать записи к страницам
Перейти к содержимому

WordPress как привязать записи к страницам

  • автор:

Как разместить запись на странице WordPress?

article

05.02.2021

Эта статья будет интересна начинающим пользователям, которые делают первые шаги в мире WP. Вордпресс удобен тем, что он подходит для установки недорогого хостинга. Следовательно, является выбором № 1 для начинающего вебмастера.

Есть два способа как разместить запись на странице WordPress. Можно ее добавить в новом или старом редакторе. Рассмотрим оба эти варианта.

Какой бы редактор вы не выбрали, работа будет вестись через панель администратора. Здесь находите опцию «Запись», далее – «Добавить». Если у вас настроено выпадающее меню, можно использовать этот способ.

Как добавить запись на странице WordPress в новом редакторе?

Наименование нового редактора – Гутенберг. Он устанавливается на версиях WP, начиная от 5.0.

После того как вы выбрали «Добавить новую запись», на выпадающей вкладке отобразится:

1. Заголовок – здесь указываете наименование текста.
2. Текст – в этом поле размещается статья.
3. Статус – здесь настраивается дата публикации.
4. Метки – здесь размещаем теги, помогающие находить вашу статью.
5. Изображение – здесь размещаем картинку, относящуюся к публикации.
6. Рубрика – здесь вы сможете отнести запись к одной из рубрик сайта.
7. Отрывок – здесь можно разместить краткое описание статьи.
8. Обсуждения – эту опцию нужно активировать в том случае, если вы хотите, чтобы читатели оставляли комментарии.
9. Опубликовать – после нажатия на эту клавишу, запись смогут увидеть другие.
10. Предпросмотр – здесь можно посмотреть, как будет отображаться запись в браузере.

Несколько полезных опций, которые можно использовать в разделе «Текст»:

  • абзац – здесь можно выбрать настройки стиля;
  • Н – формат заголовков;
  • цитата – часть текста отображается в виде цитаты.

Рекомендуем настроить все параметры текста еще до размещения его на сайте.

Чтобы добавить в текст элементы форматирования, перейдите в «Абзац», + добавляйте необходимые элементы.

Когда текст размещен, добавляем изображение. Рекомендуем это сделать обязательно. Картинки привлекают внимание читателей. Войдите во вкладку «Изображение», выберите «Установить изображение». Файл загружается с компьютера. Можно выбрать из Проводника, либо перетащить нужную картинку из любой открытой папки. Когда загрузка закончена, кликните на «Установить изображение». Ставим галочку напротив нужной рубрики, выбираем опцию «Опубликовать».

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

1. Заголовок – здесь публикуется заглавие статьи.
2. Текст – основной раздел, в котором будет находиться сама статья. В нем находится панель инструментов для форматирования записи.
3. Опубликовать – поле предназначено для публикации поста.
4. Рубрики – при помощи галочки можно статью отнести к одной из рубрик.
5. Метки – здесь публикуются теги, помогающие найти запись.
6. Изображение – в этом разделе можно добавить картинку.

На первый взгляд, старый редактор напоминает новый, но при форматировании записи могут быть определенные отличия. Приведу пример. Чтобы в старом редакторе отформатировать текст, выделите часть записи. При помощи инструментов форматирования, внесите правки. Если вы хотите добавить в текст медиафайл, можно воспользоваться этой же панелью. После загрузки вы увидите маленькое превью картинки. Чтобы опубликовать его, нажмите на изображение, выберите опцию «Вставить».

Чтобы добавить в файл картинку, выберите опцию «Изображение», добавьте «Установить изображение». Откроется окно проводника. Выбираем «Добавить файлы» и «Установить изображение». Если все сделано правильно, запись появится.

Теперь вы и сами можете ответить на вопрос как добавить запись на определенную страницу WordPress. Осталось дело за малым, закрепить полученные знания на практике. Если остались непонятные моменты, укажите их в комментариях.

Понравилась статья? Расскажите о ней друзьям:

Как добавить поддержку меток и рубрик для страниц WP?

Несмотря на то, что всё это делается функцией register_taxonomy_for_object_type(), код для каждой таксономии будет разным — отдельно для рубрик, отдельно для меток и отдельно для произвольной таксономии.

Каждый листинг кода будет состоять из двух частей:

  1. Первая часть кода — основная, именно в ней и будет добавляться поддержка определенной таксономии (рубрики, метки и пр.)
  2. Вторая часть кода — это модификация стандартных запросов. Т.е. например вы открыли на сайте страницу архива какой-либо категории, а там отображаются и записи post и страницы page .

Как привязать рубрики к страницам?

Достаточно добавить этот код в functions.php темы.

function true_apply_categories_for_pages(){ add_meta_box( 'categorydiv', 'Категории', 'post_categories_meta_box', 'page', 'side', 'normal'); // добавляем метабокс категорий для страниц register_taxonomy_for_object_type('category', 'page'); // регистрируем рубрики для страниц } // обязательно вешаем на admin_init add_action('admin_init','true_apply_categories_for_pages'); function true_expanded_request_category($q) { if (isset($q['category_name'])) // если в запросе присутствует параметр рубрики $q['post_type'] = array('post', 'page'); // то, помимо записей, выводим также и страницы return $q; } add_filter('request', 'true_expanded_request_category');

Как привязать метки к страницам?

Можно одновременно использовать с кодом для рубрик.

function true_apply_tags_for_pages(){ add_meta_box( 'tagsdiv-post_tag', 'Теги', 'post_tags_meta_box', 'page', 'side', 'normal' ); // сначала добавляем метабокс меток register_taxonomy_for_object_type('post_tag', 'page'); // затем включаем их поддержку страницами wp } add_action('admin_init','true_apply_tags_for_pages'); function true_expanded_request_post_tags($q) { if (isset($q['tag'])) // если в запросе присутствует параметр метки $q['post_type'] = array('post', 'page'); return $q; } add_filter('request', 'true_expanded_request_post_tags');

Окей, я вставил весь код выше (и тот, который для категорий и тот, который для тегов) «как есть» в functions.php своей темы, и вот что у меня получилось:

Включаем поддержку рубрик и меток для страниц WordPress

Метабоксы рубрик и меток на странице редактирования страниц (тип поста page) WordPress.

Привязка таксономий к произвольным типам постов

Способ 1. register_taxonomy()

Тут всё проще — достаточно при регистрации таксономии указать все необходимые типы постов в параметре $object_type функции register_taxonomy().

$taxonomy = ''; // название таксономии $object_type = array(); // тут и указываем все необходимые типы постов в виде массива $args = array(); // параметры таксономии register_taxonomy( $taxonomy, $object_type, $args );

Способ 2. register_taxonomy_for_object_type() и фильтр «request»

А что, если у нас нет доступа к параметрам функции register_taxonomy()? Что, если она является частью плагина или темы, и установленные нами параметры будут сбрасываться каждый раз при обновлении?

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

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

function true_apply_taxonomy_for_post_type(){ // add_meta_box() в данном случае не нужен register_taxonomy_for_object_type('category', 'product'); } add_action('admin_init','true_apply_taxonomy_for_post_type'); function true_expanded_request_custom($q) { if (isset($q['category_name'])) // для произвольных таксономий нужно использовать их название, например $q['product_category'] $q['post_type'] = array('post', 'product'); return $q; } add_filter('request', 'true_expanded_request_custom');

Смотрите также

  • Как вывести рубрики в две колонки?
  • register_taxonomy_for_object_type() — присваивает таксономию указанному типу постов
  • register_taxonomy() — создание таксономии
  • Метабоксы в WordPress

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 30

Мария 12 Июн 2015
Спасибо, очень пригодилась статья!
alx dh 24 Июн 2015

А как в функции true_expanded_request_custom($q) добавить к категориям еще и тэги, и произвольную таксономию custom_tax?
В синтаксисе плаваю и вообще. ))
Заранее спасибо.

Миша 25 Июн 2015
Вот тут есть описание query-параметров truemisha.ru/blog/wordpress/get_query_var.html. Например:

$q['tag_id'] = 50;

Ира 28 Июл 2015
Скажите пожалуйста а как привязать к странице к рубрики?
Миша 28 Июл 2015
Извините, а код из статьи у вас не заработал?
Ира 29 Июл 2015
Заработал, но только все наоборот надо чтоб страницы к рубрикам привязывались
Миша 31 Июл 2015
Тогда думаю вам нужно это.
Ира 31 Июл 2015
Спасибо, но это не то что нужно, не сильна совсем в кодах
Наташа 11 Авг 2015

У меня тот же вопрос что и у Иры, теперь страницы в рубриках отображаются, а надо чтобы определенная рубрика на страницу выводилась, т.е страница не была статичной, а наполнялась определенной рубрикой.. Заранее спасибо!

Andy 5 Сен 2015

У меня код не заработал. Ошибку выдает при сохранении страницы, для которой была выбрана рубрика.
То есть, meta box на «страницах» отображается, но толку от него, если при сохранении белый фон и предупреждение: Warning: Cannot modify header information — headers already sent by (output started at W:\domains\travel\wp-content\themes\mosaic\functions.php:1) in W:\domains\travel\wp-admin\post.php on line 235 Warning: Cannot modify header information — headers already sent by (output started at W:\domains\travel\wp-content\themes\mosaic\functions.php:1) in W:\domains\travel\wp-includes\pluggable.php on line 1178

Andy 5 Сен 2015
Простите. ошибка в кодировке. Код работает, спасибо! Но только в бэк-энде.
Александр 19 Сен 2015

Здравствуйте! Как я могу получить массив с рубриками, привязанными к странице?
Привязал 2 рубрики, вардамплю:

$id = get_the_ID(); var_dump( get_page($id) );
object(WP_Post)#7343 (24) < ["ID"]=>int(11) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2014-09-27 17:39:00" ["post_date_gmt"]=> string(19) "2014-09-27 10:39:00" ["post_content"]=> string(0) "" ["post_title"]=> string(12) "Статьи" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(8) "articles" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2015-09-19 08:19:05" ["post_modified_gmt"]=> string(19) "2015-09-19 01:19:05" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(34) "http://a839288a8932.tmweb.ru/?page_id=11" ["menu_order"]=> int(3) ["post_type"]=> string(4) "page" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" >

О привязанных рубриках никакого упоминания..
Миша 19 Сен 2015
Здравствуйте!
get_the_category() должно помочь.
Александр 19 Сен 2015
Благодарю! Помогло. Статьи у вас отличные! Спасибо
Мария 22 Ноя 2015

Михаил, добрый день.
Уже не первый раз нахожу ваши полезные статьи в поисковике по разным запросам. Теперь уже вижу домен и жму для перехода на сайт, т.к. знаю, что тут все по делу))
Михаил, у меня вопрос такой: а на главное страницы будут в этом случае выводиться? В ленту рсс уходить? Мне бы не надо. То есть, я жду от этой функции, что страницы с полезной информацией будут добавляться как бы фоном, незаметно для пользователей, но в то же время для заинтересованных в рубрике и по тегу страницы отображаться будут.
Например, есть рубрика «Бали», тег «Авиа». Я создала запись про аэропорт Денпасар, понятно, что в рассылке это никому неинтересно читать, да и на главной вовсе необязательно это афишировать, эта запись просто для поискового трафика. Вот думаю подобные статьи создавать страницами, но чтобы в рубриках или как минимум по тегам они фигурировали, но в общей ленте не шли.
Если я сделаю функционал в вашей статье, это так и будет работать, или же страницы будут себя вести как и записи блога? Спасибо!

Миша 23 Ноя 2015
Добрый день!
Страницы появятся только в рубриках 🙂
Мария 28 Ноя 2015
Михаил, спасибо!
Все отлично работает! Прям как надо))
Никита 16 Ноя 2016

Михаил здравствуйте! Во-первых отличный блог, много полезной информации, спасибо Вам) Теперь собственно сабж:
Проделал все как написано в статье, но что-то не могу понять что изменилось, страница отображается так, будто не имеет к рубрике никакого отношения. Ожидал увидеть примерно следующее:
Создал страницу, привязал к рубрике. При переходе в рубрику, отображается ссылка на эту страницу. Переходим по ссылке и открывается та самая страница. Но сейчас даже в хлебных крошках не выстраивается нужная иерархия. Объясню что нужно: Есть несколько рубрик, условно:
-Дома кирпичные
-Дома из бруса
.
В каждой рубрике есть что-то похожее на меню:
-Дома кирпичные
—Описание(просто текст)
—Проекты(список постов)
—Отзывы(список постов)
.
-Дома из бруса
—аналогичные пункты В итоге иерархия должна строиться след. образом:
Дома кирпичные -> Описание
Дома кирпичные -> Проекты -> Проект 1
и т.д. Реализовал бы все через вложенные рубрики, но сложность в том, что для пунктов в которых есть посты нужен уникальный шаблон. Надеюсь понятно объяснил) Подскажите пожалуйста в какую сторону копать, как-то дорабатывать Ваше решение, или может есть другой вариант? Спасибо!

Миша 17 Ноя 2016

Добрый день!
спасибо! По идее этот код делает две вещи:
1) добавляет возможность при редактировании страницы определить рубрику для неё
2) на самой рубрике выводить помимо записей еще и страницы. По идее код этот в своё время использовался и должен работать. У вас второй пункт не работает я верно понимаю? Рубрика вообще пустая или в ней только записи отображаются сейчас?

Никита 17 Ноя 2016

Первый пункт работает. Второй нет. В рубрике выводятся записи, но не выводятся страницы. Ну и я так полагаю что не строятся хлебные крошки в нужном порядке, а надо бы) Спасибо!

Миша 18 Ноя 2016
Попробуйте этот код вставить в functions.php темы:

function tr_pre_redefining_query( $query ) { if ( $query->is_category ) { // если рубрика $query->set('post_type', array('post', 'page')); // ставим тип и записи и страницы } return $query; } add_filter('pre_get_posts', 'tr_pre_redefining_query');

Никита 20 Ноя 2016

Спасибо! Сейчас вывелась ссылка на страницу, но по прежнему хлебные крошки ее как-будто не видят. И еще такой момент: Заметил что если какой-то кастомный шаблон(category-.php), то ссылка на страницу уже не выводится, а если по умолчанию, то работает как нужно. Можно ли как-то победить обе проблемы? Спасибо!

Миша 21 Ноя 2016

То есть при переходе на страницу в хлебных крошках не появляется рубрика, к которым она принадлежит? Про кастомный шаблон — не понял про ссылку. Имеется ввиду, что страницы не появляются в цикле?

Никита 21 Ноя 2016

Да, при переходе на страницу в хлебных крошках идет: Главная -> Страница, рубрики между ними нет. По кастомному шаблону тоже верно, если это просто стандартный цикл то все выводится, если с параметрами то нет. Решил сделать по-другому, т.к. время поджимает. Сделал следующим образом:
1) Создал страницы(как основные разделы), к ним создал подстраницы(как подразделы).
2) Через плагин произвольных полей(ACF) создал поле для страниц «Привязка к рубрике».
3) При создании страниц, привязывается рубрика и выбирается кастомный шаблон для страницы. Дальше все кодом. Но и здесь столкнулся с проблемой. Т.к. рубрика и страница имеют одинаковые урлы, приоритет отдается рубрике, и шаблон уже не работает. В общем запутался( Подскажите пожалуйста как лучше сделать? Спасибо!

Миша 22 Ноя 2016

Лучше вернуться к моему способу, просто цикл с параметрами у вас неправильно задается — добавьте к нему везде как минимум ещё параметр

'post_type' => array('page','post')

Никита 28 Ноя 2016

Михаил здравствуйте! Снова я) Попробовал добавить параметр что Вы написали. Теперь страница выводится, но урл все равно формируется неправильно(в хлебных крошках соответственно тоже). По логике должно быть так:
корень-сайта/рубрика/страница
а работает так:
корень-сайта/страница
Цикл выглядит так:

 $cat, 'orderby' => 'ID', 'order' => 'DESC', 'post_type' => array('page','post') ); query_posts($args); if ( have_posts() ) : while ( have_posts() ) : the_post();?>

Как вообще решить эту задачу? Спасибо!
Миша 28 Ноя 2016

Здравствуйте, данная статья не затрагивает ни URL, ни хлебных крошек. И к сожалению статей на эту тему у меня нет.

Гость 1 Мар 2020

Спасибо за статью, пользуюсь этим кодом несколько лет, но возможно пришла пора его обновить — почему-то не работает с Gutenberg’ом — не отображаются ни Рубрики ни Метки. Нашел вот такое решение, но терзают смутные сомнения и нужно мнение специалиста — всё ли здесь хорошо и всё ли предусмотрено:

function my_add_taxonomies_to_pages() { register_taxonomy_for_object_type( 'post_tag', 'page' ); register_taxonomy_for_object_type( 'category', 'page' ); } add_action( 'init', 'my_add_taxonomies_to_pages' ); if ( ! is_admin() ) { add_action( 'pre_get_posts', 'category_and_tag_archives' ); } function category_and_tag_archives( $wp_query ) 

WordPress: как привязать кастомный тип записи к странице?

У меня задача, заполнять комментарии из админки, которые приходят на почту, и которые пишут, на различных площадках.

Я планирую создать кастомный тип записи, создавать там комментарии и привязывать их к конкретным страницам, через обязательные поля, с помощью advanced custom fields.
При заполнение нового отзыва, я бы указывал страницу, на которой будет выводиться отзыв, с какой площадки он пришёл и т.д.

Вопрос, как мне связать, запись с отзывом с конкретной страницей?

Может быть есть более правильный вариант, как это можно было бы реализовать?

  • Вопрос задан более двух лет назад
  • 187 просмотров

7 комментариев

Средний 7 комментариев

WordPress: как создать запись и присвоить ее нужной странице?

Ребят, wordpress для меня вещь совершенно новая и столкнулся с проблемой. У меня есть Страницы, они как меню сверху, пример:

Главная О центре Информация Фотографии Контакты

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

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

Может, конечно, я как-то неправильно думаю, и скажете, что рубриками круче и правильнее, но всё же мне интересно, как именно создать запись и присвоить её к странице не Главная, а к любой другой, которая нужна мне?

  • Вопрос задан более трёх лет назад
  • 18096 просмотров

Комментировать
Решения вопроса 1

MonkAlbino

Michael Danilov @MonkAlbino
Фронтенд разработчик

«О нас» страница. Значит и создавайте страницу, у которой родительской будет «О нас». Записи из коробки нельзя делать дочерними к странице.
Дальше идёте в функцию, отрисовывающую меню. Считаетет дочерние страницы и выводите рядом количество подстраниц и список этих подстраниц.

Ответ написан более трёх лет назад

rugayf

Руслан Гайфутдинов @rugayf Автор вопроса

@MonkAlbino Если создавать страницу для которой родительская «О нас», получается выпадающее меню,навожу «О нас» чуть ниже появляется как бы список созданный из дочерних, а на самой странице О нас эти записи не отображаются

MonkAlbino

Michael Danilov @MonkAlbino

@rugayf вариантов 2: использовать рубрики или для страниц исправить шаблон, чтобы показывался не контент страницы, а дочерние элементы. Тут уже плясать от того, что вам удобнее.
Если на сайте только страницы, без всяких записей типа «новости», «блоги» или что-то в этом духе, то я бы сделал «/%category%/%postname%». И тогда бы в рубриках выводились бы из коробки элементы этой рубрики.
Если есть динамичные записи типа «новости», «корп.блог», которые сделаны через записи, то изменил бы шаблон страницы на показ подстраниц.

Добавить комментарий

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