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

Проверяем, содержится ли в записи/странице галлерея

Добавление этого сниппета в вашу тему wordpress позволит вам проверить, содержит ли запись шорткод галереи. Добавьте этот код в шаблон single.php вашей темы ВП внутрь цикла.

if ( get_post_gallery() ){
echo 'есть галерея';
}else{
echo 'галереи не обнаружено';
}

Если вы хотите вывести галерею после проверки, в случае ее существования, замените ‘есть галерея’ на следующий код:

echo get_post_gallery();

Отображаем дефолтное сообщение, если цитаты у поста/страницы нет

Добавление этого сниппета в вашу тему wordpress позволит вам отображать установленное вами сообщение в случае, если цитата к записи не была добавлена.

$excerpt = get_the_excerpt();
if ( empty($excerpt) ) {
        echo "Нет цитаты для этой записи.";
}
echo $excerpt;

Шорткод для вывода IP-адреса пользователя на страницах и записях

Добавление этого сниппета в файл functions.php вашей темы wordpress позволит вам использовать шорткод для вывода IP-адреса пользователя на страницах и записях.

function display_user_ip() {
        $ip = $_SERVER['REMOTE_ADDR'];
        return $ip;
}
add_shortcode('user_ip', 'display_user_ip');

Сам шорткод:

[ip]

Редирект с основного сайта на поддомен

Добавляем следующий сниппет в файл functions.php вашей темы:

add_action('parse_request', 'wpds_redirect_to_sub_site');
function wpds_redirect_to_sub_site(){
    global $wp;

    if('http://www.example.com' === $wp->request){

        $url = 'http://www.example.com/subsite';
        wp_redirect($url, 301);
        exit;
    }
}

Результатом будет то, что все запросы к ‘www.example.com’ будут перенаправляться на ‘www.example.com/subsite’.

Отключаем рубрики, страницы авторов, архивы по датам и теги

Добавляем следующий сниппет в файл functions.php вашей темы:

add_action('template_redirect', 'wpse69948_archive_disabler');
function wpse69948_archive_disabler()
{
    if(is_tag() || is_category() || is_date() || is_author())
    {
        global $wp_query;
        $wp_query->set_404();
    }
}

Сниппет будет перенаправлять пользователей со страниц рубрик, страниц авторов, архивов по датам и тегам на страницу “404 not found”.

Записываем ошибки в файл

Добавляем следующий сниппет в файл “wp-config.php”, расположенный в корне вашего сайта:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

Сниппет будет протоколировать все уведомления об ошибках и предупреждения в файл debug.log в папке wp-content (если у Apache не будет прав на запись, то необходимо создать такой файл и выставить ему соответствующие права (666) )

Добавляем дефолтный контент в записи определенной рубрики

Добавляем следующий сниппет в файл functions.php вашей темы:

add_filter( 'default_content', 'wpds_default_products_content' );
function wpds_default_products_content( $content ) {

    $category_id = MY_CATEGORY_ID;

    if( isset( $_REQUEST['category_id'][0] )
    && $category_id == $_REQUEST['category_id'][0] )
        return "<div>контент по-умолчанию</div>";
}

Вместо MY_CATEGORY_ID указываем ID рубрики, а вместо «контент по-умолчанию» — соответственно ваш контент.

Режим только-чтение редактора TinMCE для определенных типов записей

Добавляем следующий сниппет в файл functions.php вашей темы:

add_filter('tiny_mce_before_init', 'myformatTinyMCE' );
function myformatTinyMCE($in)
{
    global $post;
    if($post->post_type=='my_post_type')
        $in['readonly']='1';
    return $in;
}

Устанавливаем для E-mail content type в text/html

Добавляем следующий сниппет в файл functions.php вашей темы:

add_filter( 'wp_mail_content_type','mail_set_content_type' );
function mail_set_content_type(){
    return "text/html";
}

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

Добавляем ссылку Mailto ко всем e-mail адресам

Добавляем следующий сниппет в файл functions.php вашей темы:

add_filter('the_content','add_mailto',10,1)
function add_mailto($content) {
    $pattern = "/([a-z0-9][_a-z0-9.-]+@([0-9a-z][_0-9a-z-]+\.)+[a-z]{2,6})/i";
    $replace = "\\1";
    $text = preg_replace($pattern, $replace, $content);
    return htmlspecialchars($content);
}

В результате все e-mail адреса в теле записей будут иметь ссылку с “mailto”. На самом деле, это не лучшая идея, потому как от спама отбоя не будет, но, возможно, кому-то сниппет будет полезен.

Источник: WPDevSnippets

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Об авторе ADv

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