Пользователь
0,0
рейтинг
12 августа 2014 в 17:10

Разработка → Малоизвестные функции в WordPress из песочницы

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

Дабы уменьшить количество расстройств, я решил описать несколько малоизвестных, но весьма полезных функций:

make_clickable
Находит в тексте ссылки и делает их кликабельными.
Пример:
$string = "This is a long text that contains some links like http://www.wordpress.org and http://www.wordpress.com .";
echo make_clickable( $string ); 


popuplinks
Добавляет target='_blank' rel='external' всем ссылкам в тексте.
Пример:
$string = "This is a long text that contains some links like <a href='http://www.wordpress.org'>http://www.wordpress.org</a> and <a href='http://www.wordpress.com'>http://www.wordpress.com</a> .";
echo popuplinks( $string ); 


wp_list_pluck
Достает определенные поля из коллекции.
Пример:
$posts = get_posts();
$ids = wp_list_pluck( $posts, 'ID' ); // [1, 2, 3, ...]


antispambot
Преобразовывает адреса электронной почты в символы HTML, для защиты от спам-ботов.
Пример:
$email = 'example@email.com';
echo '<a href="mailto:' . antispambot( $email ) . '">' . antispambot( $email ) . '</a>';


checked / selected
Добавляет атрибут checked (selected) если первый параметр равен второму.
Пример:
<input type="checkbox" name="remember" value="1" <?php checked( $remember ) ?> />

<select name="options">
    <option value="1" <?php selected( $options, 1 ); ?>>1</option>
    <option value="2" <?php selected( $options, 2 ); ?>>2</option>
    <option value="3" <?php selected( $options, 3 ); ?>>3</option>
</select>


human_time_diff
Представляет разницу во времени в понятном для человека виде.
Пример:
$published = get_the_time( 'U' );
echo human_time_diff( $published ); // 2 days


wp_send_json_success / wp_send_json_error
Выводит данные в JSON формате для Ajax запросов.
Пример:
if( $success ) {
    $result = array(
        'message'	=> 'Saved',
        'ID'		=> 1
    );
    wp_send_json_success( $result ); // { "success": true, "data": { "message": "Saved", "ID": 1 } }
}
else {
    wp_send_json_error(); // { "success": false }
}


wp_remote_get / wp_remote_post
Получает данные со стороннего web ресурса.
Пример:
$response = wp_remote_get( "https://api.twitter.com/1.1/search/tweets.json?q=%23WordPress", array( 'timeout' => 10 ) );
$tweets = wp_remote_retrieve_body( $response );


wp_is_mobile
Определяет устройство пользователя.
Пример:
if ( wp_is_mobile() ) {
    get_footer( 'mobile' );
}
else {
    get_footer();
}


wp_oembed_get
Конвертирует ссылку на медиа ресурс в код проигрывателя.
Пример:
$youtube_url = 'https://www.youtube.com/watch?v=Lcvh0DgytH8';
$embed_code = wp_oembed_get( $youtube_url, array( 'width' => 800 ) );


wp_tempnam
Создает временный файл с уникальным именем.
Пример:
wp_tempnam( 'cache.log', get_temp_dir() );


zeroise
Дополняет число нулями до определенной длины.
Пример:
$tickets_count = 8;
echo zeroise( $tickets_count, 3 ); // 008


capital_P_dangit
Исправляет распространенную ошибку в названии бренда WordPress.
Пример:
$string = "I Love Wordpress";
echo capital_P_dangit( $string ); // I Love WordPress


get_num_queries
Показывает общее количество SQL-запросов к базе данных на странице.
Пример:
<!-- Number of queries: <?php echo get_num_queries(); ?> -->


wp_text_diff
Находит различия в тексте и отображает их в удобном для сравнения виде.
Пример:
$left_string = 'This is the original string';
$right_string = 'This is the revised string';
echo wp_text_diff( $left_string, $right_string );


submit_button
Генерирует код кнопки.
Пример:
<?php submit_button( __( 'Save Changes' ) ); ?>


enjoy :)
@Pingbull
карма
6,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (8)

  • +3
    > capital_P_dangit
    Самая полезная на мой взгляд — даже в композере такого не найти
    • 0
      Надо зреть в корень ;) В композере нет просто потому, что эта функция встроена в сам PHP!

      Правда называется плохо и не так явно…
      Скрытый текст
      preg_replace('/wordpress/isu', 'WordPress');
      
      • 0
        Ох уж эти перловики-олдскульщики.

        Выбор поколения пятого пыха — str_ireplace
  • +2
    Спасибо, но из интересного только wp_is_mobile и wp_oembed_get.
    zeroise — так вообще что-то странное, догадываюсь, что просто обертка над sprintf("%0{$count}d", $num);

    Пока работал с WP у меня накопились некоторые полезные функции, которые позже вылились в один гист

    Из более или менее интересного:

    • использование другого фавикона для сайта на локальной машине и продакшена (удобно, когда открыто много вкладок и с продакшена, и с локальной машины и не понятно что где). Для локальной версии использую такой же фавикон, только черно-белый. Идея с хабра, если не ошибаюсь.
    • уничтожение всех пробельных символов между элементами списка wp_menu — необходимо для более точных margin/padding в элементах меню, когда им задано свойство dispay: inline-block.
    • задание first/last классов для всех пунктов меню (включая вложенные) для wp_menu

    Возможно, что-то уже неактуально для последний версий WP.
    • –3
      Я еще убираю класы и id с менюшек, пользы от них там никакой (за редким исключением). Так же фильтрирую класы для body, ибо так же сомнительна их полезность
  • 0
    Хм, checked использовал, а вот об остальных представленных функциях даже не знал. Особенно радуют те, что для работы с AJAX. Спасибо за подборку, отличный пост!
  • 0
    не понял зачем нужна zeroise, если есть стандартная str_pad

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.