客户需要一个网站才能迁移到WordPress。

在此网站中,每个页面都有一个带有不同内容的侧边栏

在某些页面中, Accordion 位于侧边栏下方,在某些情况下,仅可见文本和图像

如何在WordPress中实现呢?

如果必须创建模板,则无法完成很多页面

即使对于每个页面,也不可能使用不同的侧边栏小部件

指导我实现此方法

最佳答案

可以通过两个步骤将不同的侧边栏(小部件)添加到每个页面:

  • 使用页面slug作为侧边栏名称的一部分,将侧边栏添加到主题模板。这样可以确保侧栏在该页面上具有唯一的名称。
  • 为主题
  • functions.php中注册每个页面的侧边栏

    将边栏添加到主题模板

    在主题模板中,将以下代码添加到您希望小部件区域所在的位置:
    <?php
        global $post;
        dynamic_sidebar( 'widget_area_for_page_'.$post->post_name );
    ?>
    

    注册侧边栏

    在主题的functions.php中,添加以下代码块以注册站点中每个页面的侧边栏。请注意,它包括草稿页等,因此您可以在仍处于草稿模式的情况下编辑小部件。
    function myTheme_registerWidgetAreas() {
        // Grab all pages except trashed
        $pages = new WP_Query(Array(
            'post_type' => 'page',
            'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit'),
            'posts_per_page'=>-1
        ));
        // Step through each page
        while ( $pages->have_posts() ) {
            $pages->the_post();
            // Ignore pages with no slug
            if ($pages->post->post_name == '') continue;
            // Register the sidebar for the page. Note that the id has
            // to match the name given in the theme template
            register_sidebar( array(
                'name'          => $pages->post->post_name,
                'id'            => 'widget_area_for_page_'.$pages->post->post_name,
                'before_widget' => '',
                'after_widget'  => '',
                'before_title'  => '',
                'after_title'   => '',
            ) );
        }
    }
    add_action( 'widgets_init', 'myTheme_registerWidgetAreas' );
    

    希望能帮助到你!

    关于WordPress-每页不同的侧边栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22501068/

    10-13 01:04