Статьи

Восемь скрытых жемчужин в справочнике по функциям WordPress

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

Но в этом большом океане как системе управления контентом, есть некоторые крошечные кусочки кода, которые упускаются из виду. В этом уроке мы кратко рассмотрим восемь интересных функций WordPress.

Этот, надеюсь, будет интересным уроком для большинства из вас. Я должен признать, что я был поражен некоторыми функциями, говоря: «Есть функция для этого?»

Некоторые из них могут быть не такими интересными, как другие, но я уверен, что вам понравится читать эту статью и узнавать об этих скрытых жемчужинах !

Вам когда-нибудь приходилось делиться адресом электронной почты в своем блоге или на сайте WordPress? Скорее всего, у вас есть, и если вы когда-нибудь заботились о том, чтобы вас не поймали спам-роботы, которые просматривают в Интернете адреса электронной почты, номера телефонов и тому подобное, вы искали решение, чтобы скрыть адреса электронной почты от этих крошечных злых роботов.

Я знаю, что у меня есть, и мало что я знал, для него уже была базовая функция WordPress: antispambot() .

Использование функции довольно просто:

1
2
3
4
5
<?php
$my_email_address = «my.secret.email.address@gmail.com»;
$my_email_address_cloaked = antispambot( $my_email_address );
echo $my_email_address_cloaked;
?>

Но, конечно, вы не можете использовать PHP в своем контенте (если вы не используете плагин для этой цели). Чтобы использовать эту функцию в своем контенте, вы можете использовать небольшой шорткод, подобный приведенному ниже:

01
02
03
04
05
06
07
08
09
10
<?php
function antispambot_sc( $atts ) {
    extract( shortcode_atts( array(
        ’email’ => »
    ), $atts ) );
    return antispambot( $email );
}
add_shortcode( ‘antispambot’, ‘antispambot_sc’ );
// Usage: [antispambot email=»my.cloaked.email.address@gmail.com»]
?>

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

Это может быть моим любимым среди всех этих драгоценных камней : get_extended() позволяет буквально разделить две части, до и после <!--more--> .

Использование тоже довольно просто. Допустим, вы находитесь в файле single.php и собираетесь показывать рекламу между вступлением и остальной частью статьи. Вот как вы делаете The Loop:

01
02
03
04
05
06
07
08
09
10
11
12
<?php
while( have_posts() ) : the_post();
 
$content_parts = get_extended( get_the_content() );
 
echo ‘<h1 class=»post-title»>’ .
echo ‘<p class=»intro»>’ .
echo ‘<!— Paste your ad code here.
echo ‘<div class=»article»>’ .
 
endwhile;
?>

Отличное, но простое решение, не требующее дополнительного кода!

Вот элемент «противоречия» этой статьи: очень обсуждаемая capital_P_dangit() .

Как вы знаете, слово «WordPress» должно быть написано заглавной буквой W и заглавной буквой P. Эта крошечная функция «исправляет» неправильную прописную букву слова.

1
2
3
4
5
<?php
$text = «WordPress is awesome!»;
$corrected_text = capital_P_dangit( $text );
echo $corrected_text;
?>

Выглядит как забавная маленькая функция, но проблема в том, что WordPress Core настроен на принудительное выполнение этой функции в заголовке, содержании и комментариях. Джастин Тэдлок написал об этом около 4 лет назад , упомянув, что функция ломает URL. К счастью, проблема была исправлена ​​в версии 3.0.1, но я вижу, что она все еще ломает вещи.

Например, если вы неправильно написали WordPress в примере кода, и для кода важен маленький «p», он нарушает код.

К счастью, решение проблемы также простое. Перейдите в файл functions.php вашей темы (или создайте новый плагин для этой проблемы) и вставьте следующий код:

1
2
3
4
5
<?php
remove_filter( ‘the_title’, ‘capital_P_dangit’, 11 );
remove_filter( ‘the_content’, ‘capital_P_dangit’, 11 );
remove_filter( ‘comment_text’, ‘capital_P_dangit’, 31 );
?>

Мое личное мнение: Да, я думаю, что использование слова «WordPress» с заглавной буквы чрезвычайно важно, и меня раздражает каждый раз, когда я вижу людей, пишущих «WordPress», но WordPress не должен заставлять людей отображать слово правильно.

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

Когда это время наступит, strip_shortcodes() станет вашим другом.

В Кодексе есть очень хороший пример. Допустим, вам нужно удалить шорткоды на домашней странице, но разрешить их запуск на других страницах контента.

Вот как вы должны использовать strip_shortcodes() :

1
2
3
4
5
6
7
8
<?php
function remove_shortcode_from_index( $content ) {
    if ( is_home() )
        $content = strip_shortcodes( $content );
    return $content;
}
add_filter( ‘the_content’, ‘remove_shortcode_from_index’ );
?>

Быстро и просто.

Если вы являетесь разработчиком плагинов (или разработчиком тем, которым по какой-то причине необходимо проникнуть на территорию плагинов ) и вам нужно добавить правило перезаписи для своей функции, вы должны сказать своим пользователям обновить правила перезаписи, посетив страницу на странице параметров Постоянные ссылки и нажав кнопку «Сохранить изменения» без каких-либо изменений, или вы можете сделать свой код для очистки самих правил перезаписи с помощью функции flush_rewrite_rules() !

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
// Register Custom Post Type
function portfolio_cpt() {
    register_post_type( ‘portfolio’,
        array(
            ‘labels’ => array(
                ‘name’ => __( ‘Portfolios’, ‘my-locale’ ),
                ‘singular_name’ => __( ‘Portfolio’, ‘my-locale’ )
            ),
        ‘public’ => true,
        ‘has_archive’ => true,
        )
    );
}
 
add_action( ‘init’, ‘portfolio_cpt’, 0 );
 
function myplugin_activate() {
    portfolio_cpt();
    flush_rewrite_rules();
}
 
register_activation_hook( __FILE__, ‘myplugin_activate’ );
 
function myplugin_deactivate() {
    flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, ‘myplugin_deactivate’ );
?>

Кодекс выражает, что очистка правил перезаписи является дорогой функцией с точки зрения использования ресурсов сервера. Вот почему мы должны делать это только при активации и деактивации вашего плагина или темы.

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

Если вы имеете дело с какими-либо правилами переписывания (например, если вы создаете новый тип записи или таксономию), вам следует помнить об этой функции.

Как и strip_shortcodes() , wp_is_mobile() также легко объяснить: он позволяет обнаруживать пользователей, которые используют мобильные устройства для подключения к вашему веб-сайту.

1
2
3
4
5
6
7
<?php
if( wp_is_mobile() ) {
    // echo the «HAVE YOU TRIED OUR AWESOME MOBILE APP?»
} else {
    // don’t echo the banner
}
?>

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

Всегда нужно было включить переменную, встроенный стиль для вашего плагина или темы? Конечно ты сделал! Постановка в очередь внешних CSS-файлов с помощью функции WordPress ‘ wp_enqueue_style() (и ее компаньонов) довольно удобна, но ей не хватает функциональности для включения встроенных стилей CSS.

Ну, по крайней мере, я так думал, прежде чем wp_add_inline_style() функцию wp_add_inline_style() .

01
02
03
04
05
06
07
08
09
10
11
<?php
$custom_style_file = get_template_directory_uri() .
 
function custom_styles() {
    wp_enqueue_style( ‘custom-style’, $custom_style_file );
    $headline_font_weight = get_theme_mod( ‘headline-font-weight’ );
    $custom_style = ‘.headline { font-weight: ‘ .
    wp_add_inline_style( ‘custom-inline-style’, $custom_style );
}
add_action( ‘wp_enqueue_scripts’, ‘custom_styles’ );
?>

Честно говоря, я давно не знал эту функцию. Это могло бы сэкономить мне много времени, если бы я знал это раньше.

Разработчикам тем и плагинов может потребоваться проверить, будет ли их код запускаться в цикле или нет. Как следует из названия, in_the_loop() дает ответ легко.

1
2
3
4
5
6
7
<?php
if( in_the_loop() ) {
    // do something loop-related
} else {
    // don’t do anything or display some kind of error/warning
}
?>

Вероятно, самый простой для использования среди функций в этой статье, наряду с wp_is_mobile() .

Как вы можете видеть из того, что мы рассмотрели в статье, в ядре WordPress и Справочнике по функциям в Кодексе есть несколько довольно полезных функций. Возможно, вы слышали о некоторых из них, но держу пари, что вы не знали о них все, верно?

Вы знаете какие-нибудь основные функции WordPress, подобные этим? Поделитесь своими знаниями с нами, комментируя ниже!

И если вам понравилась статья, не забудьте поделиться ею с друзьями!