TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Создание сообщений и страниц WordPress с помощью PHP – 101

390

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

Это может быть полезно, если:

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

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

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

ПОШАГОВОЕ РУКОВОДСТВО

Мы будем создавать PHP-функцию под названием PostCreator(), и нам потребуется, чтобы она принимала определенные параметры. Каждому параметру присвоено значение по умолчанию, поэтому технически при вызове функции вам не нужно указывать какой-либо из них, но, эй, а где в этом удовольствие?

function PostCreator( $name = 'AUTO POST', $type = 'post', $content = 'DUMMY CONTENT', $category = array(1,2), $template = NULL, $author_id = '1', $status = 'publish') { // function output here }

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

define( POST_NAME, $name ); define( POST_TYPE, $type ); define( POST_CONTENT, $content ); define( POST_CATEGORY, $category ); define( POST_TEMPLATE, '' ); define( POST_AUTH_ID, $author_id ); define( POST_STATUS, $status );

Хорошо, пока все хорошо. Теперь я включил некоторую проверку, чтобы предотвратить создание дублирующих сообщений / страниц (что является кошмаром, поверьте мне!). Эта проверка проверяет, существует ли уже сообщение / страница с таким именем. Если это так, он не создает новый, а если нет, он создает его для вас.

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

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

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

Теперь вернемся к проверке. Вот следующий фрагмент кода.

Так что, черт возьми, здесь происходит?

Что ж, по сути, это один и тот же процесс, повторяемый дважды. Я делаю это из-за того, что посты и страницы обрабатываются немного по-разному. Кроме того, константа POST_TEMPLATE определяется только в том случае, если вы пытаетесь создать страницу, потому что только страницы могут принимать этот параметр (т. Е. Он будет проигнорирован, если вы пытаетесь создать стандартное сообщение).

В первой строке предложения IF (его техническое название – «аподозис», если вы еще не знали) переменная $ post определяется. Если есть сообщение / страница с тем же именем, которое пытается создать, тогда $ post заполняется данными существующей записи (как объект, а не массив, но это можно изменить, если это абсолютно необходимо). Эта переменная используется для проверки уникальности вашего заголовка. Следующие две строки я включил, потому что, опять же, они очень полезны, если вы хотите расширить эту функцию. Примером этого может быть обновление существующей публикации, если она уже существует.

Далее идет наша вложенная функция, которая будет добавлена ​​к хуку admin_head. Вот;

Просто это использование встроенной функции WordPress (wp_insert_post) для создания нашей публикации / страницы. Мы заполняем $ post_data массивом наших параметров (здесь вы можете увидеть наши константы). Он создается, и в случае ошибки генерирует логическое значение $ error_obj. ИСТИНА = проблема. FALSE = все в порядке. Последнее, что нужно сделать, это запустить предыдущую функцию в голове администратора, но только если она проходит проверку, и вернуть объект ошибки.

if (! isset( $post) ) { add_action( 'admin_init', 'hbt_create_post' ); return $error_obj; }

Большой! Теперь мы создали нашу потрясающую функцию, давайте воспользуемся ею!

ПРИМЕНЕНИЕ

Просто включите функцию PostCreator () и запустите ее.

Это будет работать с использованием значений по умолчанию, но что, если нам нужна настраиваемость? Затем мы используем наши параметры.

PostCreator( 'TITLE', 'POST TYPE', 'POST CONTENT', 'POST CATEGORY', 'TEMPLATE FILE NAME', 'AUTHOR ID NUMBER', 'POST STATUS' );

При использовании всех этих параметров используйте апострофы. Убедитесь, что если вы хотите использовать апостроф (кроме окружающих сами параметры), вы ставите перед ним обратную косую черту. Например;

PostCreator( 'Alex's Post' );

Параметр TITLE принимает строковое значение. Это лишено HTML-тегов.

Параметр POST TYPE принимает, например, заголовок типа сообщения; “сообщение” или “страница”. Поддерживаются пользовательские типы сообщений.

PostCreator( 'Alex's Post', 'page' );

POST CONTENT ‘принимает строковое значение. Это будет содержание созданного поста / страницы. HTML здесь разрешен.

PostCreator( 'Alex's Post', 'page', 'The force is strong with this one…' );

КАТЕГОРИЯ POST принимает массив целых чисел. Целые числа соответствуют идентификатору категории / категорий, связанных с сообщением / страницей.

PostCreator( 'Alex's Post', 'page', 'The force is strong with this one…', array( 1, 2) );

TEMPLATE FILE NAME – это строковое значение, определяющее желаемый шаблон страницы вашей новой страницы. Это работает только для страниц. Формат будет; ‘имя_файла.php'.

PostCreator( 'Alex's Post', page', 'The force is strong with this one…', array( 1, 2 ), 'fullwidth_page.php' );

ИДЕНТИФИКАЦИОННЫЙ НОМЕР АВТОРА – это целое число ID автора.

PostCreator( 'Alex's Post', 'page', 'The force is strong with this one…', array( 1, 2 ), 'fullwidth_page.php', '1' );

POST STATUS позволяет вам определить состояние созданного сообщения / страницы. По умолчанию он «опубликован».

Доступные Варианты; [‘черновик' | ‘опубликовать' | «в ожидании» | «будущее» | «частный» | пользовательский зарегистрированный статус]

PostCreator( 'Alex's Post', 'page', 'The force is strong with this one…', array( 1, 2 ), 'fullwidth_page.php', '1', 'publish' );

ЗАКЛЮЧЕНИЕ

WordPress – исключительно мощный инструмент, но временами он определенно может быть непослушным. Я надеюсь, что вы найдете этот простой фрагмент полезным, возможно, вы узнаете кое-что в процессе. Следите за новостями в следующем, где я собираюсь преобразовать то, что мы уже сделали в этой статье, в класс PHP, добавив больше функциональности и стабильности. Для предварительного просмотра ознакомьтесь с кодом на Github: PostController

Если у вас есть какие-либо вопросы, просто задавайте их в разделе комментариев ниже.

Источник записи: https://www.wpexplorer.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее