jefftancil
  • 0
Новичок

Динамические боковые панели на нескольких подстраницах

  • 0

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

Я написал условное выражение для отображения разных боковых панелей на разных страницах. Однако одна боковая панель с виджетами отображается почти на всех страницах, несмотря на условное выражение.

Боковую панель, которая появляется на нужной странице, можно увидеть здесь: http://www.africanhealthleadership.org/about/approach/

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

Код выглядит следующим образом. Я полный фанат PHP, поэтому я, вероятно, сделал что-то глупое. Я пробовал использовать одинарные кавычки вокруг dynamic_sidebar(2), но это не сработало.

Спасибо за любую помощь.

<?php 
     if ( is_subpage('approach') ) {
     if (!function_exists ( dynamic_sidebar(1) ) ) ; 
}
    elseif ( is_subpage('research')) {
    if (!function_exists( dynamic_sidebar(2)) || !dynamic_sidebar( "Sidebar2") );
    }
?>
Share
  1. Откуда берется is_subpage() и что именно делает? Я не думаю, что это родная функция WordPress.

    • 0
  2. Более простой и элегантный (более высокая ремонтопригодность):

    <?php 
    // Your sidebar should have the wp_meta action hook
    wp_meta();
    
    // in ex. your functions.php
    function my_sidebar_content() {
        // "About" Page
        if ( is_page('about') ) {
            // If some widget is added via Admin > Design > Widgets
            if ( is_active_sidebar( 'widgets-sidebar-default' ) ) {
                // Display Widgets
                dynamic_sidebar( 'widgets-sidebar-default' );
            }
            // Default Content before Widgets were added
            else {
                _e('default static content', TEXTDOMAIN);
            }
        }
        // "Links" Page
        elseif ( is_page('links') ) {
            if ( is_active_sidebar( 'widgets-sidebar-links' ) ) {
                dynamic_sidebar( 'widgets-sidebar-links' );
            }
            else {
                _e('default static content', TEXTDOMAIN);
            }
        }
    }
    add_action( 'wp_meta', 'my_sidebar_content', 10 );
    
    # ===================================================
    // OR:
    wp_meta();
    
    // functions.php
    function load_my_sidebars() {
        // "About" Page
        if ( is_page('about') ) {
            get_template_part( 'sidebar_content', 'default' );
        }
        // "Links" Page
        elseif ( is_page('links') ) {
            get_template_part( 'sidebar_content', 'links' );
        }
    }
    add_action( 'wp_meta', 'load_my_sidebars', 10 );
    
    // in sidebar_content-default.php
        // If some widget is added via Admin > Design > Widgets
        // You can add any static content right here before the widgets
        if ( is_active_sidebar( 'widgets-sidebar-default' ) ) {
            // Display Widgets
            dynamic_sidebar( 'widgets-sidebar-default' );
        }
        // Default Content before Widgets were added
        else {
            _e('default static content', TEXTDOMAIN);
        }
        // You can add any static content right here after the widgets
    
    // in sidebar_content-links.php
        if ( is_active_sidebar( 'widgets-sidebar-links' ) ) {
            dynamic_sidebar( 'widgets-sidebar-links' );
        }
        else {
            _e('default static content', TEXTDOMAIN);
        }
    ?>
    
    • 0
  3. Я не знаю, почему кто-то проверяет, dynamic_sidebar существует ли. На данный момент выпущено 9 крупных релизов. Я действительно надеюсь, что вы не разрабатываете для 2.1 или ниже. Попробуй это:

    if( is_page('approach') )
      dynamic_sidebar(1);
    elseif( is_page('research') )
      dynamic_sidebar(2);
    

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

    • 0
  4. Вы можете просто использовать расширение «Widget Logic», поэтому вам не нужно писать поддержку пользовательских виджетов на боковой панели в фактический шаблон.

    • 0

Оставить ответ

You must login to add an answer.