15 полезных функций WordPress, которые должны знать все разработчики
WordPress полон замечательных функций для нас, разработчиков. Мы можем извлекать списки постов из воздуха, манипулировать практически всем, что с ними связано, захватывать любого пользователя, которого мы хотим, и быстро отображать их связи в социальных сетях..
Однако существует довольно много функций, которые, по-видимому, игнорируются по неизвестным причинам. Я работаю с WordPress уже около 8 лет, и время от времени я все еще нахожу что-то новое! Давайте посмотрим на некоторые из моих любимые упущенные функции и узнайте, как использовать их по пути.
antispambot ()
Я обычно поднимаю несколько бровей с этим, это, кажется, одна из самых хорошо скрытых функций в кодовой базе.
заменяет символы объектами HTML, что является одним из способов маскировать адреса электронной почты от злых скребков.antispambot ()
$ email = '[email protected]'; эхо "Вы можете связаться со мной по". антиспамбот ($ email). ' в любой момент'.
Хотя это полезный лакомый кусочек, это также пример того, почему некоторые люди критикуют WordPress - это ужасно названная функция. Прочитав имя функции, вы не знаете, что она делает.
human_time_diff ()
Когда я впервые узнал об этой функции около года назад, я подумал, что это было недавнее дополнение, которое я пропустил в журнале изменений. Не совсем…
Эта функция, которая выводит разницу между двумя временными метками, используется с версии 1.5 (17 февраля 2018 года!).
Следующий большой фрагмент, который я позаимствовал из кодекса, показывает, как давно был опубликован текущий пост. Он использует дата публикации поста в качестве первого аргумента и текущая дата как вторая.
echo 'Это сообщение было опубликовано'. human_time_diff (get_the_time ('U'), current_time ('timestamp')). ' тому назад';
get_post_meta ()
Смирись со мной здесь, я знаю, что это хорошо используемая функция, однако то, как она работает, не является общеизвестным знанием. Прежде всего, пропустив второй и третий параметры, вы можете вытащить все метаданные для поста.
$ all_meta = get_post_meta (14);
Даже если вы берете данные только для одного ключа, все постметы все равно тянут.
Причина на самом деле довольно логична. Метаданные используются в нескольких местах. Если
запрашивает базу данных каждый раз, когда она используется, мы получим слишком много запросов. Вместо этого, если вы извлекаете метаданные, он кэширует все и использует кэшированные значения во всех последующих извлечениях метаданных..get_post_meta ()
wp_upload_bits ()
Эта функция является прямой функция загрузки файла. Хотя он не перемещает файл в папку загрузки и не добавляет его в раздел мультимедиа WordPress, он чрезвычайно удобен, и вы всегда можете сделать все остальное с помощью
функция.wp_insert_attachment ()
$ upload = wp_upload_bits ($ file ['name'], null, file_get_contents ($ file ['tmp_name']));
Для этого есть некоторые объяснения: первый параметр - это имя файла. Второй амортизируется, поэтому он должен быть установлен на нуль (eyeroll при согласованности WordPress). Третий параметр - это фактическое содержимое файла..
get_post_field ()
В прошлом я видел довольно много примеров, когда кто-то писал цикл для подсчета количества комментариев к сообщению или писал для него отдельный запрос к базе данных. Вы не нуждаетесь в них, что вам нужно
. Эта функция извлекает значение одного поля для одного сообщения в базе данных. Давайте возьмем количество комментариев!get_post_field ()
Этот пост имеет Комментарии.
wpautop ()
Эта функция немного попала в центр внимания, но все еще относительно неизвестна. Это похоже на PHP родной nl2br
но вместо того, чтобы создавать новые линии, это оборачивает ваш контент в абзацы.
Это полезно, если у вас есть текстовое поле, и вы хотите убедиться, что когда пользователи создают абзацы с двойными переносами строк, они также остаются видимыми во внешнем интерфейсе..
Что говорят наши пользователи
wp_is_mobile ()
Это метко названная функция определяет, когда пользователь находится на мобильном устройстве, и позволяет отображать контент соответствующим образом.. Так как это условный тег, он возвращает true или false в зависимости от сценария.
Посетите наш веб-сайт на вашем рабочем столе для более богатого пользовательского опыта
wp_redirect ()
Последний пример показывает еще одну аккуратную функцию:
. Это должно быть использовано вместо нативного PHP wp_redirect ()
Заголовок ()
функция. Функция перенаправления WordPress позволяет установить URL для перенаправления, а также установить код состояния, отлично подходит для обработки постоянных перенаправлений.
// Для URL, который больше не используется wp_redirect ('http://website.com/new-url/', 301);
paginate_links ()
Могу поспорить, что эта функция частично неизвестна из-за популярности плагина WP-PageNavi. По умолчанию WordPress отображает предыдущие / следующие ссылки в конце вашего списка сообщений. WP-PageNavi заменяет это номерами страниц.
Это может быть сделано с небольшой работой, используя
функции. У него довольно много параметров, поэтому я рекомендую взглянуть на документацию.paginate_links ()
В следующем примере из кодекса показано, как добавить его в цикл по умолчанию, но добавить его в пользовательские циклы не так уж сложно..
global $ wp_query; $ big = 999999999; // нужен маловероятный целочисленный эхо paginate_links (массив ('base' => str_replace ($ big, '% #%', esc_url (get_pagenum_link ($ big))), 'format' => '? paged =% #%' , 'current' => max (1, get_query_var ('paged')), 'total' => $ wp_query-> max_num_pages));
wp_die ()
Эта функция дополняет PHP умереть()
функция. Разница в том, что эта функция будет отображать HTML-стиль в стиле WordPress вместо простого текста. Вы можете использовать эту функцию, чтобы остановить выполнение PHP. Вы можете добавить сообщение, заголовок и дополнительные аргументы для отображения, например:
wp_die («К сожалению, у вас нет доступа к», «Отказано в доступе»);
has_block ()
В версии 5.0 WordPress представил блочный редактор под кодовым названием Gutenberg. Эта функция идентифицирует, содержит ли содержимое Gutenberg, точно так же, как has_shortcode ()
функция. Он вернется правда
если содержание содержит блок, или ложный
если это не так.
wp_set_script_translations ()
Поскольку многие части пользовательского интерфейса WordPress собираются перейти на JavaScript, ему нужен удобный способ регистрации переводимых текстов в JavaScript, который WordPress мог бы анализировать и понимать. Используйте эту функцию, чтобы установить переведенные строки для ваших скриптов. Ниже приведен пример:
wp_enqueue_script ('my-script', plugins_url ('js / my-script.js', __FILE__)); wp_set_script_translations ('my-script', 'mu-text-domain');
register_block_type ()
Еще одна заметная функция в WordPress 5.0. Эта функция позволяет зарегистрировать новый блок в новом редакторе WordPress. Ваш блок появится в новом редакторе и вставит его .
register_block_type ('my-plugin / new-block', массив ('title' => 'New Block', 'icon' => 'megaphone', 'category' => 'widgets', 'render_callback' => 'render_function_callback') ,));
rest_do_request ()
Эта функция позволяет вам вызывать конечные точки API WordPress REST через PHP. Очень полезно, когда вам нужно получить выход из REST API для обработки, которую вы будете обрабатывать дальше на стороне PHP, а не на стороне браузера (front-end).
$ request = new WP_REST_Request ('GET', "/ wp / v2 / posts"); $ request-> set_header ('X-WP-Nonce', wp_create_nonce ('wp_rest')); $ response = rest_do_request ($ request); $ data = 200 === $ response-> get_status ()? $ response-> get_data (): [];
rest_preload_api_request ()
При создании тяжелого JavaScript-интерфейса в WordPress обычно требуется набор исходных данных, размещаемых на странице. Это функция, которая позволит вам сделать это. Эта функция предназначена для использования в сочетании с array_reduce
, например.
// Предварительная загрузка общих данных. $ preload_paths = array ('/', '/ wp / v2 / types? context = edit', '/ wp / v2 / taxonomies? per_page = -1 & context = edit', '/ wp / v2 / themes? status = active' ,); preload_data = array_reduce ($ preload_paths, 'rest_preload_api_request', array ()); wp_add_inline_script ('wp-api-fetch', sprintf ('wp.apiFetch.use (wp.apiFetch.createPreloadingMiddleware (% s));', wp_json_encode ($ preload_data)), 'after');
Заключение
Это всего лишь некоторые функции, которые менее известны, чем остальные. Я открываю новую замечательную функцию примерно каждые два месяца, и я уверен, что мои друзья-разработчики могут удивить нас еще больше.
Если у вас есть любимая скрытая функция или функция, которая была бы полезна, но недоступна, сообщите нам об этом в комментариях!