15 Корисні функції WordPress Всі розробники повинні знати
WordPress наповнений великими функціями, які ми використовуємо розробниками. Ми можемо витягувати поштові списки з неба, маніпулювати майже всіма ними, захоплювати будь-якого користувача, якого хочемо, і показувати їхні соціальні медіа під час відразу.
Однак існує досить багато функцій, які, здається, невідомі з невідомих причин. Я кодував з WordPress близько 8 років, і іноді я все ще знаходжу щось нове! Давайте подивимося на деякі з моїх улюблені функції і навчитися використовувати їх на цьому шляху.
antispambot ()
Зазвичай я піднімаю кілька брів, але це, здається, одна з найбільш прихованих функцій кодової бази..
замінює символи з об'єктами HTML, що є одним із способів маски адрес електронної пошти від злих скребків.antispambot ()
$ email = '[email protected]'; echo "Ви можете зв'язатися зі мною за адресою". antispambot ($ email). "будь-який час".
Хоча це корисний ласий шматочок, це також приклад того, чому деякі люди критикують WordPress - це жахливо названа функція. Від читання назви функції, ви не знаєте, що вона робить.
human_time_diff ()
Коли я вперше дізнався про цю функцію близько року тому, я подумав, що це має бути нещодавнє доповнення, яке я забув у журналі змін. Не зовсім…
Ця функція - яка виводить різницю між двома мітками часу - була з версії 1.5 (це 17 лютого 2018 року!).
Наступний великий фрагмент, який я взяв із кодексу, показує, як давно опубліковано поточну публікацію. Він використовує публікувати дату публікації як перший аргумент і поточну дату як другу.
echo "Ця публікація була опублікована". human_time_diff (get_the_time ('U'), поточний_час ('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 ()
header ()
функції. Функція перенаправлення 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 die ()
функції. Відмінність полягає в тому, що ця функція відображатиме HTML у стилі WordPress замість простого тексту. Ви можете використовувати цю функцію для зупинки виконання PHP. Можна додати повідомлення, назву та додаткові аргументи, які будуть відображатися, наприклад:
wp_die ("На жаль, у вас немає доступу до" "," Відхилено дозвіл ");
has_block ()
У версії 5.0 WordPress представив блок-редактор, під кодовою назвою Гутенберг. Ця функція визначатиме, чи вміст містить Гутенберга, те ж саме з 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' => 'Новий блок', 'icon' => 'мегафон', 'категорія' => 'віджети', 'render_callback' => 'render_function_callback' ,));
rest_do_request ()
Ця функція дозволяє здійснювати виклик кінцевим точкам API WordPress REST через PHP. Дуже корисно, коли потрібно отримати вивід з REST API, щоб обробити, що ви будете обробляти далі на стороні PHP, а не на стороні браузера (передній).
$ 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', масив ()); wp_add_inline_script ('wp-api-fetch', sprintf ('wp.apiFetch.use (wp.apiFetch.createPreloadingMiddleware (% s));', wp_json_encode ($ preload_data)), 'after');
Висновок
Це лише деякі функції, які здаються менш відомими, ніж інші. Я відкриваю нову чудову функцію кожні два місяці, і я впевнений, що мої друзі-розробники можуть здивувати нас ще далі.
Якщо у вас є улюблена неясна функція або функція, яка буде корисною, але недоступною, повідомте нам про це в коментарях!