Любите WordPress? Мы в REG.RU его тоже любим! 💙
Специально для вас мы приготовили ряд бонусов:
— SSL и хостинг в подарок к домену;
— 500 бонусных рублей на баланс Облачных VPS;
— REG.Site на 7 дней всего за 1 рубль (конструктор сайтов на базе WordPress).
Больше акций и скидок вы найдёте у нас в Telegram-канале: @regru. Здесь мы пишем о том, как продвигать сайты в поисковых системах, какими решениями лучше всего пользоваться сейчас и про бизнес в IT.
Специально для вас мы приготовили ряд бонусов:
— SSL и хостинг в подарок к домену;
— 500 бонусных рублей на баланс Облачных VPS;
— REG.Site на 7 дней всего за 1 рубль (конструктор сайтов на базе WordPress).
Больше акций и скидок вы найдёте у нас в Telegram-канале: @regru. Здесь мы пишем о том, как продвигать сайты в поисковых системах, какими решениями лучше всего пользоваться сейчас и про бизнес в IT.
Нужно узнать ID текущей категории поста и поставить его в массив параметров нужных постов. Потом стандартным циклом выводить посты.
<ul> <?php $category = get_the_category(); $cat_add_id = $category[0]->term_id; $real_id = get_the_ID(); $args = array( 'cat' => $cat_add_id, 'numberposts' => 6 ); $query = new WP_Query( $args ); if( $query->have_posts() ){ while( $query->have_posts() ){ $query->the_post(); if ($post->ID != $real_id) { ?> <li> <a href="<?php the_permalink(); ?>"> <?php the_title(); ?> </a> </li> <?php } } wp_reset_postdata(); } ?></ul>Если проще, то REST API — это когда серверное приложение дает доступ к своим данным клиентскому приложению по определенному URL.
В API-системе четыре классических метода запроса:
GET — получить запись. Если хочешь что то забрать себе и показать на экране.
POST — создание новых записей. Если хочешь создать что то новое.
PUT — редактирование записей. Если хочешь отредактировать существующую запись (посмотри ещё про PATCH).
DELETE — удаление записей. Если хочешь удалить запись.
Чаще всего REST API применяют:
- создание мобильных приложений
- создание SPA
- предоставления доступа к программам сторонних разработчиков.
В API-системе четыре классических метода запроса:
GET — получить запись. Если хочешь что то забрать себе и показать на экране.
POST — создание новых записей. Если хочешь создать что то новое.
PUT — редактирование записей. Если хочешь отредактировать существующую запись (посмотри ещё про PATCH).
DELETE — удаление записей. Если хочешь удалить запись.
Чаще всего REST API применяют:
- создание мобильных приложений
- создание SPA
- предоставления доступа к программам сторонних разработчиков.
WordPress REST API - позволяет пользователям удаленно управлять сайтом, например получать/создавать:
- посты,
- элементы таксономии,
- юзеров,
- комментарии и т.д.
Делается все это через HTTP запросы, так называемые «маршруты».
WordPress REST API:
- Предоставляет структурированный, расширяемый и простой способ получить или передать данные в WordPress.
- Использует json в качестве формата запроса и ответа, включая ответы на ошибки.
- Предоставляет разные данные: публичные и личные (доступны только после аутентификации).
- После аутентификации rest API позволяет управлять контентом сайта.
- Позволяет работать с любым языком программирования, который может обрабатывать HTTP-запросы и интерпретировать JSON, например JavaScript, Node.js или Java.
- Позволяет создать новые способы управления сайтом. К примеру, можно создать плагин, позволяющий администрировать сайт, или создать совершенно новый интерактивный интерфейс во фронэнде.
- Может заменить способ обработки ajax запросов.
- посты,
- элементы таксономии,
- юзеров,
- комментарии и т.д.
Делается все это через HTTP запросы, так называемые «маршруты».
WordPress REST API:
- Предоставляет структурированный, расширяемый и простой способ получить или передать данные в WordPress.
- Использует json в качестве формата запроса и ответа, включая ответы на ошибки.
- Предоставляет разные данные: публичные и личные (доступны только после аутентификации).
- После аутентификации rest API позволяет управлять контентом сайта.
- Позволяет работать с любым языком программирования, который может обрабатывать HTTP-запросы и интерпретировать JSON, например JavaScript, Node.js или Java.
- Позволяет создать новые способы управления сайтом. К примеру, можно создать плагин, позволяющий администрировать сайт, или создать совершенно новый интерактивный интерфейс во фронэнде.
- Может заменить способ обработки ajax запросов.
get_rest_url() - получает URL конечной точки REST API.
register_rest_field() - регистрирует новое REST поле для указанного типа REST объекта (ресурса).
register_rest_route() - регистрирует маршрут REST API и его эндпоинты (конечные точки). Говоря проще регистрирует URL по которому будет срабатывать указанная PHP функция.
rest_ensure_response() - проверяет и, если надо, преобразует переданные данные в объект класса WP_HTTP_Response.
Ещё больше информации по ссылке ниже 👇👇
register_rest_field() - регистрирует новое REST поле для указанного типа REST объекта (ресурса).
register_rest_route() - регистрирует маршрут REST API и его эндпоинты (конечные точки). Говоря проще регистрирует URL по которому будет срабатывать указанная PHP функция.
rest_ensure_response() - проверяет и, если надо, преобразует переданные данные в объект класса WP_HTTP_Response.
Ещё больше информации по ссылке ниже 👇👇
Для создания нового маршрута использовал функцию register_rest_route().
И с помощью функции укажу какой контент нужно выводить по зарегистрированному эндпоинту.
add_action('rest_api_init', function () { register_rest_route('art/v1', 'page/posts', [ 'methods' => 'GET', 'callback' => 'art_page_posts', 'permission_callback' => '__return_true' ]);});И с помощью функции укажу какой контент нужно выводить по зарегистрированному эндпоинту.
function art_page_posts(){ return "Контент страницы постов";}Для эндпоинта отдельного поста в маршруте можно указать id этого поста или slug.
И в функции укажу какую информацию об этом посте я хочу получить.
add_action('rest_api_init', function () { register_rest_route('art/v1', 'posts/(?P<slug>[a-zA-Z0-9-]+)', [ 'methods' => 'GET', 'callback' => 'art_post', ]);});И в функции укажу какую информацию об этом посте я хочу получить.
function art_post($slug){ $data = []; $args = [ 'post_type' => 'post', 'name' => $slug['slug'], ]; $post = get_posts($args); $id = $post[0]->ID; $get_the_post_thumbnail_url = get_the_post_thumbnail_url($id); // Added to api $data['id'] = $id; $data['title'] = $post[0]->post_title; $data['get_the_post_thumbnail_url'] = $get_the_post_thumbnail_url; $data['content'] = $post[0]->post_content; $data['slug'] = $post[0]->post_name; return $data;}Интересно получается, если нужно вывести контент поста, то использую the_content() и радуюсь. Выводит всё красиво со всеми тегами p и т.д.
Но, если хочу контент записать в переменную, то использую get_the_content() и когда использую эту переменную, то никаких тегов нет. Один сплошной текст.
Нужно было переменную через фильтр пропустить и тогда появятся все необходимые теги.
А контент поста положить в переменную мне понадобилось когда создавал API для страницы блога. Поэтому и контент в посте выше нужно пропустить через фильтр.
Но, если хочу контент записать в переменную, то использую get_the_content() и когда использую эту переменную, то никаких тегов нет. Один сплошной текст.
Нужно было переменную через фильтр пропустить и тогда появятся все необходимые теги.
$content = get_the_content();$content = apply_filters('the_content',$content);$content = str_replace(']]>',']]>',$content);А контент поста положить в переменную мне понадобилось когда создавал API для страницы блога. Поэтому и контент в посте выше нужно пропустить через фильтр.
$content = $post[0]->post_content;$content = apply_filters('the_content',$content);$content = str_replace(']]>',']]>',$content);Акция в интернет-магазине заканчивается. Ключ активации у плагина подходит к концу. А как об этом сообщить пользователю или админу сайта?
Обычно известен конец мероприятия. Перевожу эту дату в секунды.
Потом перевожу в секунды текущую дату и узнаю разность между ними.
Полученный результат делю на 60*60*24 и получаю количество дней до конца акции.
Обычно известен конец мероприятия. Перевожу эту дату в секунды.
Потом перевожу в секунды текущую дату и узнаю разность между ними.
Полученный результат делю на 60*60*24 и получаю количество дней до конца акции.
wp_ajax_(action) — срабатывает при WP AJAX запросе для авторизованного пользователя. Это запрос на файл
wp_ajax_nopriv_(action) — срабатывает при WP AJAX запросе для НЕ авторизованного пользователя. Это запрос на файл
(action) — это динамическая часть хука, в которой нужно указать название AJAX события. Это название нужно будет использовать как
/wp-admin/admin-ajax.php.wp_ajax_nopriv_(action) — срабатывает при WP AJAX запросе для НЕ авторизованного пользователя. Это запрос на файл
/wp-admin/admin-ajax.php.(action) — это динамическая часть хука, в которой нужно указать название AJAX события. Это название нужно будет использовать как
GET|POST параметр action в самом AJAX запросе на файл /wp-admin/admin-ajax.php. А также, на основе этого названия нужно будет создать хук, который будет обрабатывать AJAX запрос.query_posts() - получает записи для текущей страницы (архив авторов, отдельная запись, рубрика, метка)
Вывод формируется на основе того, какая страница показывается (главная, архив по дате, категория, архив автора и т.п.). Например, можно изменить цикл так:
✓ показывать только один пост на главной странице блога;
✓ показывать последние посты только на главной странице блога;
✓ изменить порядок сортировки постов;
✓ показывать или не показывать посты из определенной категории.
Какие параметры принимает функция можно почитать тут 👇
Вывод формируется на основе того, какая страница показывается (главная, архив по дате, категория, архив автора и т.п.). Например, можно изменить цикл так:
✓ показывать только один пост на главной странице блога;
✓ показывать последние посты только на главной странице блога;
✓ изменить порядок сортировки постов;
✓ показывать или не показывать посты из определенной категории.
Какие параметры принимает функция можно почитать тут 👇
remove_menu_page() - удаляет пункты меню верхнего уровня (записи, медиафайлы, страницы) в админ-панели.
Удаляет пункты меню только визуально, т.е. удаление пунктов меню таким образом не предотвращает от доступа к этим пунктам напрямую (например, для доступа можно ввести соответствующую ссылку в браузере). Такое удаление требует контроля доступа пользователя, несмотря на то, что в меню пунктов нет.
Удаляет пункты меню только визуально, т.е. удаление пунктов меню таким образом не предотвращает от доступа к этим пунктам напрямую (например, для доступа можно ввести соответствующую ссылку в браузере). Такое удаление требует контроля доступа пользователя, несмотря на то, что в меню пунктов нет.
Таксономия - это принцип расположения чего-либо. Для WordPress - это принцип расположения записей.
Таксономии можно сравнить с папками на компьютере: куда складываются файлы. Заходим в папку, видим список файлов. В WordPress аналогично: заходим в таксономию (рубрику), видим список записей в ней.
Типы таксономий:
✓ Древовидные - например рубрики
✓ Линейные (плоские) - например метки
Таксономии можно сравнить с папками на компьютере: куда складываются файлы. Заходим в папку, видим список файлов. В WordPress аналогично: заходим в таксономию (рубрику), видим список записей в ней.
Типы таксономий:
✓ Древовидные - например рубрики
✓ Линейные (плоские) - например метки
register_taxonomy( $taxonomy, $object_type, $args ) - Создает новую произвольную таксономию WordPress. Позволяет изменить существующую таксономию.
✓ $taxonomy - название создаваемой таксономии
✓ $object_type - название типов постов, к которым будет привязана таксономия
✓ $args - параметры таксономии
Функция позволяет добавить (зарегистрировать) пользовательскую таксономию WP или поменять данные таксономии которая уже была зарегистрирована.
При изменении существующей таксономии значение параметра $object_type из первоначальной регистрации будет перезаписано. Поэтому, его важно указать заново такое же как было или новое.
✓ $taxonomy - название создаваемой таксономии
✓ $object_type - название типов постов, к которым будет привязана таксономия
✓ $args - параметры таксономии
Функция позволяет добавить (зарегистрировать) пользовательскую таксономию WP или поменять данные таксономии которая уже была зарегистрирована.
При изменении существующей таксономии значение параметра $object_type из первоначальной регистрации будет перезаписано. Поэтому, его важно указать заново такое же как было или новое.
WP-CLI (WP Command Line Interface) — это интерфейс командной строки для WordPress. Он позволяет устанавливать/обновлять/удалять темы и плагины, создавать и просматривать любые данные на сайте, изменять настройки сайта и многое другое. Все это делается из командной строки без использования браузера.
Посмотреть список всех команд можно тут 👇👇
Посмотреть список всех команд можно тут 👇👇
get_term( $term, $taxonomy, $output, $filter ) - получает данные об элементе таксономии (термине) по переданному ID.
$term - если передан ID, то данные будут получены из БД. Если передан объект, то будут применены фильтры и возвращен переданный объект.
$taxonomy - название таксономии, к которой принадлежит элемент $term.
$output - каким видом массива возвращать данные (
OBJECT - объект.
ARRAY_A - ассоциативный массив.
ARRAY_N - индексированный массив.
)
$filter - как очищать поля массива перед возвращением.
$term - если передан ID, то данные будут получены из БД. Если передан объект, то будут применены фильтры и возвращен переданный объект.
$taxonomy - название таксономии, к которой принадлежит элемент $term.
$output - каким видом массива возвращать данные (
OBJECT - объект.
ARRAY_A - ассоциативный массив.
ARRAY_N - индексированный массив.
)
$filter - как очищать поля массива перед возвращением.
При регистрация типа записи иконка в меню – иконка обычных записей. menu_icon - отвечает за иконку для меню в админке.
✓ можно указать URL иконки
✓ можно передать SVG-иконку, зашифровав её в base64
✓ можно указать URL иконки
✓ можно передать SVG-иконку, зашифровав её в base64