Статьи

Пятьдесят действий WordPress — 50 примеров (от 31 до 40)

Если вы просто присоединяетесь к нам, мы в настоящее время работаем над 50 (из многих) действий, доступных в WordPress. В последнем посте мы рассмотрели 21 — 30, поэтому мы будем поддерживать темп в следующем посте.

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

С этим сказал, давайте начнем!

В ядре WordPress есть много скриптов, которые мы можем загрузить. Действие wp_default_scripts позволяет нам взаимодействовать с файлами JavaScript по умолчанию.

Если вы используете код jQuery и абсолютно уверены, что ваш код совместим с jQuery версии 1.9 или новее, вам не нужен плагин jQuery Migrate, который поддерживает устаревший код jQuery. Вот как вы можете отменить регистрацию:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?php
 
add_action( ‘wp_default_scripts’, ‘wp_default_scripts_example’ );
function wp_default_scripts_example( &$scripts ) {
     
    if ( ! is_admin() ) {
     
        $scripts->remove( ‘jquery’ );
        $scripts->add( ‘jquery’, false, array( ‘jquery-core’ ) );
         
    }
     
}
 
// Example Source: http://aahacreative.com/2013/08/05/remove-jquery-migrate-wordpress-36/
 
?>

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

Это действие запускается в функции wp_head() чтобы вы могли вставить материал в элемент <head> интерфейсных страниц вашего сайта.

Open Graph — это очень важный протокол, который помогает крупным парням, таким как Facebook, Google и Twitter, понимать ваши страницы. Если вы предоставляете информацию с помощью протокола Open Graph, вы можете определять избранные изображения, заголовки, резюме и тому подобное, и помогать им создавать структурированные и достоверные данные для ваших страниц.

Давайте посмотрим, как мы можем использовать этот аккуратный протокол и внедрить метаданные, связанные с Open Graph, в <head> наших страниц:

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
30
31
32
33
34
35
36
<?php
 
add_action( ‘wp_head’, ‘wp_head_example’ );
 
function wp_head_example() {
    global $post;
     
    // default image
    $site_logo = get_stylesheet_directory_uri() .
     
    // homepage
    if ( is_home() ) {
        echo ‘<meta property=»og:type» content=»website» />’;
        echo ‘<meta property=»og:url» content=»‘ . get_bloginfo( ‘url’ ) . ‘» />’;
        echo ‘<meta property=»og:title» content=»‘ . esc_attr( get_bloginfo( ‘name’ ) ) . ‘» />’;
        echo ‘<meta property=»og:image» content=»‘ . $site_logo . ‘» />’;
        echo ‘<meta property=»og:description» content=»‘ . esc_attr( get_bloginfo( ‘description’ ) ) . ‘» />’;
    }
     
    // single post or page
    elseif ( is_singular() ) {
        echo ‘<meta property=»og:type» content=»article» />’;
        echo ‘<meta property=»og:url» content=»‘ . get_permalink() . ‘» />’;
        echo ‘<meta property=»og:title» content=»‘ . esc_attr( get_the_title() ) . ‘» />’;
        if ( has_post_thumbnail( $post->ID ) ) {
            $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), ‘large’ );
            echo ‘<meta property=»og:image» content=»‘ . esc_attr( $image[0] ) . ‘» />’;
        } else
            echo ‘<meta property=»og:image» content=»‘ . $site_logo . ‘» />’;
        echo ‘<meta property=»og:description» content=»‘ . esc_attr( get_the_excerpt() ) . ‘» />’;
    }
}
 
// Example Source: http://wpdevsnippets.com/set-opengraph-meta-tags-fix-facebook-share/
 
?>

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
<?php
 
add_action( ‘after_setup_theme’, ‘after_setup_theme_example’ );
 
function after_setup_theme_example() {
 
    add_editor_style();
    add_theme_support( ‘post-formats’, array( ‘video’, ‘gallery’ ) );
    add_theme_support( ‘post-thumbnails’ );
 
}
 
?>

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

Действие manage_media_custom_column помогает нам добавлять пользовательские столбцы в список загруженных файлов в библиотеке мультимедиа.

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
 
add_filter( ‘manage_media_columns’, ‘manage_media_columns_example’ );
add_action( ‘manage_media_custom_column’, ‘manage_media_custom_column_example’, 10, 2 );
 
function manage_media_columns_example( $columns ) {
    $columns[ ‘wps_post_attachments_id’ ] = __( ‘ID’, ‘theme-name’ );
    return $columns;
}
 
function manage_media_custom_column_example( $column_name, $attachment_id ){
 
    if ( ‘wps_post_attachments_id’ === $column_name ) {
        echo $attachment_id;
    }
}
 
// Example Source: http://wpsnipp.com/index.php/functions-php/media-library-admin-columns-with-attachment-id/
 
?>

Надеюсь, вам тоже понравится!

Каждый раз, когда изменяется статус комментария («одобрен», «не одобрен», «спам» или «корзина»), будет запущен хук действий с именем transition_comment_status . После этого будет comment_(old_status)_to_(new_status) другое действие с переменными в его имени: comment_(old_status)_to_(new_status) . Давайте посмотрим, как работает второе действие.

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?php
 
add_action( ‘comment_unapproved_to_approved’, ‘comment_unapproved_to_approved_example’ );
 
function comment_unapproved_to_approved_example( $comment ) {
 
    $commenter_email = $comment->comment_author_email;
    $commenter_name = $comment->comment_author;
    $post_url = get_comment_link( $comment );
    $subject = «Your comment is up!»;
    $message = «Hello $commenter_name,\n\nYour comment has been approved!You can view it below:\n\n$post_url\n\nThank you for sharing your ideas with us!»;
 
    wp_mail( $commenter_email, $subject, $message );
}
 
?>

Теперь комментаторы будут проинформированы, когда их комментарии заканчиваются. Оттуда они могут посетить ваш пост, чтобы увидеть свои комментарии и, возможно, прочитать другие. Фантастический (и простой) способ получить постоянных посетителей!

WordPress использует то, что мы называем «шаблонами страниц», для отображения различных типов страниц, таких как отдельный пост, домашняя страница, ошибка 404, результаты поиска, архивы и тому подобное. И действие template_redirect срабатывает, когда WordPress решает, какой шаблон будет использоваться.

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

Аккуратный трюк, если вы спросите меня:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
add_action( ‘template_redirect’, ‘template_redirect_example’ );
function template_redirect_example() {
 
    if ( is_search() ) {
     
        global $wp_query;
         
        if ( 1 == $wp_query->post_count && 1 == $wp_query->max_num_pages ) {
            wp_redirect( get_permalink( $wp_query->posts[‘0’]->ID ) );
            exit;
        }
         
    }
     
}
 
// Example Source: http://www.elegantthemes.com/blog/tips-tricks/eight-useful-code-snippets-for-wordpress
 
?>

Теперь, если кто-то ищет «гуакамоле» и есть только один пост, в котором упоминается гуакамоле, посетитель будет автоматически перенаправлен на этот пост.

Круто, да?

Ленты — одна из самых старых функций в WordPress, и они по-прежнему работают как часы. С do_feed действия do_feed (и других соответствующих действий) вы можете контролировать обработку каналов.

Удаление ссылок на фиды делает фиды недоступными почти для всех, но если посетитель знает, что вы используете WordPress, и он знает, как работают фиды в WordPress, он может просто попытаться добавить /feed/ после URL вашего сайта и перейти к фидам. Что если вам действительно нужно отключить каналы? Этот фрагмент кода поможет вам полностью отключить каналы:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
 
add_action( ‘do_feed’, ‘do_feed_example’, 1 );
add_action( ‘do_feed_atom’, ‘do_feed_example’, 1 );
add_action( ‘do_feed_rdf’, ‘do_feed_example’, 1 );
add_action( ‘do_feed_rss2’, ‘do_feed_example’, 1 );
add_action( ‘do_feed_rss’, ‘do_feed_example’, 1 );
 
function do_feed_example() {
    wp_die( __( ‘<h1>Feed not available, please visit our <a href=»‘ . get_bloginfo( ‘url’ ) . ‘»>Home Page</a>!</h1>’ ) );
}
 
// Example Source: http://wpdevsnippets.com/disable-rss-feed/
 
?>

Легко, правда?

Панель инструментов (ранее админ-панель) была представлена ​​в версии 3.1 WordPress и стала целью как ненависти, так и любви — некоторые хотят полностью ее удалить, другие не могут без нее жить. В любом случае, действие admin_bar_menu — это основной хук панели инструментов, который загружает необходимые элементы в панель.

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

Фрагмент кода ниже демонстрирует панель инструментов, которая всегда показывает, вошел ли посетитель в систему или нет:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<?php
 
add_action( ‘admin_bar_menu’, ‘admin_bar_menu_example’ );
add_filter( ‘show_admin_bar’, ‘__return_true’ , 1000 );
 
function admin_bar_menu_example( $wp_admin_bar ) {
 
    if ( ! is_user_logged_in() ) {
     
        $wp_admin_bar->add_menu( array( ‘title’ => __( ‘Log In’ ), ‘href’ => wp_login_url() ) );
        $wp_admin_bar->add_menu( array( ‘title’ => __( ‘Contact’ ), ‘href’ => ‘http://www.mywebsite.com/contact/’ ) );
         
    }
     
}
 
// Example source: http://blog.ftwr.co.uk/archives/2011/01/05/always-show-admin-bar/
 
?>

Видишь как это просто? Теперь ваши посетители могут видеть ссылки «Вход» и «Контакт» вместе с окном поиска по умолчанию.

Вы можете отобразить список категорий с помощью функции wp_list_categories() . И это действие (которое имеет то же имя, что и функция) помогает нам настроить вывод.

Если вы не думаете, что вам нужны атрибуты title ссылок категории в виджете, вы можете удалить их, используя следующие строки кода в вашем проекте:

01
02
03
04
05
06
07
08
09
10
11
<?php
 
add_action( ‘wp_list_categories’, ‘wp_list_categories_example’ );
 
function wp_list_categories_example() {
    return preg_replace( ‘` title=»(.+)»`’, », $output );
}
 
// Example Source: http://wpsnipp.com/index.php/cat/remove-title-attribute-from-wp_list_categories/
 
?>

Чтобы использовать встроенную функцию поиска, вам нужно использовать get_search_form() . Если вы хотите использовать функцию перед отображением вывода, pre_get_search_form() — ваш парень.

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

1
2
3
4
5
6
7
8
<?php
 
add_action( ‘pre_get_search_form’, ‘pre_get_search_form_example’ );
function pre_get_search_form_example( $form ) {
    echo ‘<div class=»search-info»>Enter your barcode number below to access the item you want.</div>’;
}
 
?>

Обратите внимание, что этот пример можно использовать с примером действия template_redirect поэтому, когда посетители вводят номер штрих-кода, они автоматически переходят к обзору продукта.

Мы прошли четвертую серию из 50 действий в этой статье. Надеюсь, вам понравилось и узнало что-то новое. Поиграйте с тем, что вы видели, и тогда я увижу вас в следующей статье.

Я тоже хочу услышать ваши мысли. Что вы думаете об этих действиях? Оставьте свои комментарии ниже. Если вам понравилась статья, не забудьте поделиться ею!