Пачка полезных сниппетов для блога. Часть 8

Перенаправляем на нужную страницу после регистрации

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

Просто вставьте следующий код в файл functions.php вашей темы или в плагин для сайта WordPress:

function __my_registration_redirect(){
    return home_url( '/my-page' );
}
add_filter( 'registration_redirect', '__my_registration_redirect' );

Автоматически добавляем класс к body_class, если есть сайдбар

По-умолчанию, функция body_class() добавляет некоторые классы к тегу < body >, что позволяет проще стилизировать ваш сайт. Однако, ни один класс не добавляестя, если в вашем шаблоне есть сайдбар. Вот простая функция для решения проблемы.

Для применения хука просто вставьте код в functions.php.

function devise_has_sidebar($classes) {
    if (is_active_sidebar('sidebar')) {
        // добавляем 'class-name' к массиву $classes
        $classes[] = 'has_sidebar';
    }
    // return the $classes array
    return $classes;
}
add_filter('body_class','devise_has_sidebar');

Добавляем собственное сообщение в панель редактирования

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

customizing-the-wordpress-admin-part4-metabox-above-editor[1]

Копируем следующий код и редактируем под свои нужды в строке 5. Вставляем, как обычно, в файл functions.php.

// Добавляем текст помощи справа вверху
function devise_metabox_top_right(){
    add_meta_box( 'after-title-help', 'Публикация и сохранение изменений', 'devise_top_right_help_metabox_content', 'post', 'side', 'high' );
}
// вызываем функцию для отображения метабокса
function devise_top_right_help_metabox_content() { ?>
    <p>Убедитесь, что вы нажали кнопку "Опубликовать" для публикации новой статьи, или "Обновить" для сохранения изменений после редактирования.</p>
<?php }
add_action( 'add_meta_boxes', 'devise_metabox_top_right' );
// // Добавляем метабокс над формой редактирования
function devise_text_after_title( $post_type ) { ?>
    <div class="after-title-help postbox">
        <h3>Использование этой формы</h3>
        <div class="inside">
            <p>Эта форма используется для добавлений новых статей/страниц или редактирования существующих. Убедитесь, что вы нажали кнопку "Опубликовать" для публикации новой статьи, или "Обновить" для сохранения изменений после редактирования.</p>
        </div><!-- .inside -->
    </div><!-- .postbox -->
<?php }
add_action( 'edit_form_after_title', 'devise_text_after_title' );

Автоматические email-уведомления о новых записях для пользователей сайта наWordPress

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

function true_send_notification_mails($post_ID)  {
    $wp_user_search = new WP_User_Query( array( 'fields' => array('user_email') ) );
    $users = $wp_user_search->get_results();
    $user_emails = array();
    for ($i = 0; $i < count($users); $i++) {
        $user_emails[] = $users[$i]->user_email;
    } // endfor
    $user_emails = implode(",", $user_emails); // список адресов через запятую
  
    $subject = "На нашем блоге появилась новая запись " . get_bloginfo('name'); // тема письма
    $message = "Чтобы ознакомиться, перейдите по ссылке <a href='" . get_permalink($post_ID) . "'>" . get_permalink($post_ID) . "</a>"; // текст сообщение
    $headers = "Content-type: text/html; charset=utf-8 \r\n"; // кодировка письма
    $headers .= "From: ". get_bloginfo('name') ." <no-reply@". ltrim(site_url(),'http://') .">\r\n"; // от
  
    wp_mail($user_emails, $subject, $message, $headers );
    return $post_ID;
}
  
add_action('publish_post', 'true_send_notification_mails');

Проверяем, есть ли у сайдбара виджеты

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

function is_sidebar_active($index) {
	global $wp_registered_sidebars;
	$widgetcolums = wp_get_sidebars_widgets();
	if ($widgetcolums[$index])
		return true;
	return false;
}

Пример использования:

if( is_sidebar_active( 'sidebar-name' ) ):
// здесь код
endif;
VN:F [1.9.22_1171]
Rating: 1.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top