Хуки действий и фильтры очень удобны в WordPress. Они позволяют вам “сцеплять” пользовательскую функцию с уже существующей, благодаря чему можно модифицировать функционал WordPress без редактирование ядра.
Вот 10 самых полезных действий и фильтров, которые помогут перегрузить ядро WordPress!
Отключение автоматического сжатия изображений
По умолчанию WordPress сжимает jpg изображения, когда вы загружаете их на свой блог. Это удобно, потому что так можно сохранить пропускную способность канала и сократить время загрузки страницы, но иногда вам могут понадобится изображения без потери качества (к примеру, если вы фотограф и используете блог как галерею своих работ).
Вставьте следующий код в файл functions.php
, чтобы отключить автоматическое сжатие изображений.
1 |
add_filter('jpeg_quality', function($arg){return 100;}); |
Источник:
Добавление target=“blank” для всех ссылок
Многим пользователям нравятся ссылки с target="blank"
. Вот простое решение, как применить этот атрибут ко всем ссылкам.
Эту функцию нужно вставить в файл functions.php
.
1 2 3 4 5 |
function autoblank($text) { $return = str_replace('<a', '<a target="_blank"', $text); return $return; } add_filter('the_content', 'autoblank'); |
Источник:
Добавление новых контактных полей в пользовательский профиль
По умолчанию WordPress позволяет пользователям использовать логин AIM для входа, но не допускает использования логинов Facebook и Twitter! Хотя в 2012 эти сайты намного популярнее, чем старый добрый AIM.
Чтобы добавить больше методов связи в пользовательский профиль, просто вставьте эту функцию в свой файл functions.php
. В нашем случае, она добавит Facebook и Twitter, но вы можете указать любой сайт или сервис.
1 2 3 4 5 6 7 8 |
function my_user_contactmethods($user_contactmethods){ $user_contactmethods['twitter'] = 'Twitter Username'; $user_contactmethods['facebook'] = 'Facebook Username'; return $user_contactmethods; } add_filter('user_contactmethods', 'my_user_contactmethods'); |
Источник: http://wp.tutsplus.com/tutorials/quick-tip-add-extra-contact-methods-to-user-profiles/
Отключение скачка при нажатии “read more”
В блогах WordPress, когда вы щёлкаете по ссылке “Read more” (“Читать далее”), вы автоматически будете перенаправлены в то место статьи, до которого вы теоретически уже должны были дочитать. Если вам не нравится этот переход, просто добавьте следующий код в functions.php
, чтобы избавится от него.
1 2 3 4 |
function wdc_no_more_jumping($post) { return '<a href="'.get_permalink($post->ID).'" class="read-more">'.'Continue Reading'.'</a>'; } add_filter('excerpt_more', 'wdc_no_more_jumping'); |
Источник:
Автоматическое включение древовидных комментариев
По умолчанию в WordPress отключены древовидные комментарии. Если вы хотите это исправить, вот удобный фрагмент кода, который нужно вставить в functions.php
:
1 2 3 4 5 6 7 8 |
function enable_threaded_comments(){ if (!is_admin()) { if (is_singular() AND comments_open() AND (get_option('thread_comments') == 1)) wp_enqueue_script('comment-reply'); } } add_action('get_header', 'enable_threaded_comments'); |
Источник:
Как показать срочное сообщение в разделе администрации WordPress
Когда вы создаёте тему или плагин WordPress, вам может потребоваться сообщить пользователю что-то важное, к примеру, о необходимости обновления. Вам нужно, чтобы пользователь обновил настройку, или проверил, правильно ли были перенесены его настройки. Вот готовая функция для отображения сообщения на панели администрирования.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function showMessage($message, $errormsg = false){ if ($errormsg) { echo '<div id="message" class="error">'; } else { echo '<div id="message" class="updated fade">'; } echo "<p><strong>$message</strong></p></div>"; } function showAdminMessages() { showMessage("You need to upgrade your database as soon as possible...", true); if (user_can('manage_options') { showMessage("Hello admins!"); } } add_action('admin_notices', 'showAdminMessages'); |
Источник:
Автоматическая замена слов в постах
Представьте, что ваш блог назывался “myblog”, и по каким-то причинам вы переименовали его в “mysuperblog”. Вместо того, чтобы редактировать сотни своих постов, чтобы заменить только это название, просто вставьте следующий код в functions.php
, и он сделает всё за вас:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function replace_text_wps($text){ $replace = array( // 'WORD TO REPLACE' => 'REPLACE WORD WITH THIS' 'wordpress' => '<a href="#">wordpress</a>', 'excerpt' => '<a href="#">excerpt</a>', 'function' => '<a href="#">function</a>' ); $text = str_replace(array_keys($replace), $replace, $text); return $text; } add_filter('the_content', 'replace_text_wps'); add_filter('the_excerpt', 'replace_text_wps'); |
Источник:
Добавление миниатюр постов в RSS фид
Этот классный код получит миниатюру поста и автоматически добавит её в ваш RSS фид. Вставьте его в functions.php
и сохраните файл. Чтобы это все работало, вы должны использовать тему, которая поддерживает
1 2 3 4 5 6 7 8 9 10 11 |
function cwc_rss_post_thumbnail($content) { global $post; if(has_post_thumbnail($post->ID)) { $content = '<p>' . get_the_post_thumbnail($post->ID) . '</p>' . get_the_content(); } return $content; } add_filter('the_excerpt_rss', 'cwc_rss_post_thumbnail'); add_filter('the_content_feed', 'cwc_rss_post_thumbnail'); |
Источник:
Режим технического обслуживания
Иногда вам необходимо закрыть свой блог на время технического обслуживания. Есть много плагинов, которые могут это сделать, но вот более простое решение: необходимо лишь вставить следующий фрагмент кода в файл functions.php
и сохранить его. Теперь ваш блог недоступен никому, кроме администраторов. Не забудьте удалить код, когда закончите технические работы!
1 2 3 4 5 6 |
function cwc_maintenance_mode() { if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) { wp_die('Maintenance, please come back soon.'); } } add_action('get_header', 'cwc_maintenance_mode'); |
Источник: http://skyje.com/2011/05/wordpress-code-snippets/
Удаление автоссылок в комментариях
Если в блоге WordPress кто-то оставит комментарий, содержащий url, этот url будет автоматически преобразован WordPress в ссылку. Это может быть полезным, но когда в комментариях много ссылок, большинство из них — спам.
В удалении автоссылок нет ничего сложного: нужно только вставить следующий код в файл functions.php
, и как только вы его сохраните, все автоматически созданные ссылки исчезнут.
1 |
remove_filter('comment_text', 'make_clickable', 9); |
Источник: