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

Запрещаем Disqus выводить JS код и другие скрипты везде, кроме страниц и записей

Disqus выводит свой яваскрипт в тех разделах сайта, где это вообще не нужно? Добавьте следующий сниппет в файл functions.php вашей темы или в плагин для сайта WordPress и скрипты от дискасс будут подгружаться только на записях is_singular или на страницах, где комментарии разрешены.

add_action( 'wp_head', 'tgm_tame_disqus_comments' );
function tgm_tame_disqus_comments() {
        if ( is_singular( array( 'post', 'page' ) ) && comments_open() )
                return;
        remove_action( 'loop_end', 'dsq_loop_end' );
        remove_action( 'wp_footer', 'dsq_output_footer_comment_js' );
}

Изменяем цвета страниц/записей по статусу в админке — Черновик, На утверждении, Опубликовано, Запланировано, Личное

Добавление этого сниппета в functions.php вашей темы изменит фоновые цвета элементов в админке, а именно записей или страниц в списке в зависимости от статуса записи: Черновик, На утверждении, Опубликовано, Запланировано, Личное.

change-admin-postpage-color-by-status-draft-pending-published-future-private-screenshot[1]

add_action('admin_footer','posts_status_color');
function posts_status_color(){
?>
<style>
.status-draft{background: #FCE3F2 !important;}
.status-pending{background: #87C5D6 !important;}
.status-publish{/* no background keep wp alternating colors */}
.status-future{background: #C6EBF5 !important;}
.status-private{background:#F2D46F;}
</style>
<?php
}

Создаем и применяем сайдбары к страницам/записям динамически

Довольно большой сниппет, по сравнению с обычно публикуемыми, но очень полезный. Этот сниппет позволяет вам автоматически создавать новые сайдбары просто добавив его название в массив. Также вы можете назначить динамически созданный сайдбар определенной странице, просто выбрав его из созданного вами же списка в админке (при редактировании записи/страницы).

Добавляем первый сниппет к functions.php вашей темы. Что он делает? Первое, он создает новый метабокс в редакторе страниц, который позволяет вам назначить странице динамически созданный сайдбар. Второе, вы видите массив из названий: Sidebar 01, Sidebar 02 и т.д. Это названия динамически создаваемых сайдбаров, которые вы можете изменить по своему усмотрению или же добавить новые. Скопируйте второй сниппет в ваш файл sidebar.php, заменив при этом содержимое по-умолчанию (то, что там было ранее) и все, настройка окончена.

dynamically-create-and-attach-sidebars-to-pages-or-posts-screenshot[1]

snippet : PHP — functions.phpcopy

    $dynamic_widget_areas = array(
                /* переименуйте или создайте новый динамический сайдбар */
                "Sidebar 01",
                "Sidebar 02",
                "Sidebar 03",
                "Sidebar 04",
                "Sidebar 05",
                "Sidebar 06",
                "Sidebar 07",
                "Search Template",
                );
if ( function_exists('register_sidebar') ) {
    foreach ($dynamic_widget_areas as $widget_area_name) {
        register_sidebar(array(
           'name'=> $widget_area_name,
           'before_widget' => '<div id="%1$s" class="widget %2$s left half">',
           'after_widget' => '</div>',
           'before_title' => '<h3 class="widgettitle">',
           'after_title' => '</h3>',
        ));
    }
}
        add_action("admin_init", "sidebar_init");
        add_action('save_post', 'save_sidebar_link');
        function sidebar_init(){
                add_meta_box("sidebar_meta", "Sidebar Selection", "sidebar_link", "page", "side", "default");
        }
        function sidebar_link(){
                global $post, $dynamic_widget_areas;
                $custom  = get_post_custom($post->ID);
                $link    = $custom["_sidebar"][0];
        ?>
<div class="link_header">
        <?
        echo '<select name="link" class="sidebar-selection">';
        echo '<option>Выберите сайдбар</option>';
        echo '<option>-----------------------</option>';
        foreach ( $dynamic_widget_areas as $list ){
                    if($link == $list){
                      echo '<option value="'.$list.'" selected="true">'.$list.'</option>';
                        }else{
                      echo '<option value="'.$list.'">'.$list.'</option>';
                        }
                }
        echo '</select><br />';
        ?>
</div>
<p>Выберите сайдбар для этой страницы.</p>
<?php
}
function save_sidebar_link(){
global $post;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {return $post->ID;}
        update_post_meta($post->ID, "_sidebar", $_POST["link"]);
}
add_action('admin_head', 'sidebar_css');
function sidebar_css() {
        echo'
        <style type="text/css">
                .sidebar-selection{width:100%;}
        </style>
        ';
}

Следующий код вставляем в sidebar.php (с заменой исходного содержимого). Предварительно сделайте резервную копию!

<!-- begin sidebar -->
<div id="sidebar">
<?
           global $post;
           $custom  = get_post_custom($post->ID);
           $link    = $custom["_sidebar"][0];
        if($link != ''){
            echo '<ul id="widgets">';
                if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar($link) ) :
                endif;
            echo '</ul>';
        }
?>
</div>
<!-- end sidebar -->
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

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