在函数中使用INCLUDE时REGISTER_SIDEAR失败。php

时间:2014-06-25 作者:Sam

我已经通过函数注册了几个侧栏。php如下所示:

// Register sidebars
function register_widgets() {

// Main sidebar
  register_sidebar( array(
    \'name\' => __( \'Main Sidebar\', \'Core\' ),
    \'id\' => \'main\',
    \'description\' => __( \'The main sidebar appears on the right on each page except the front page template and blog.\', \'Core\' ),
    \'before_widget\' => \'<aside id="%1$s" class="widget %2$s">\',
    \'after_widget\' => \'</aside>\',
    \'before_title\' => \'<h3 class="widget-title">\',
    \'after_title\' => \'</h3>\',
  ) );
}
add_action( \'widgets_init\', \'register_widgets\' );
由于我要添加多个侧栏,所以我想将代码移动到一个include。这就是我现在的函数。php:

// Load widgets
require_once("includes/widgets.php");
现在,我已经从函数中删除了边栏代码。php,我的主题不再通过外观>小部件显示任何小部件选项。

我看不出我犯了什么错误。我做错了什么?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您在小部件中犯了一个错误。php文件,很可能忘记添加一个开口</php 标记在文件的开头。还有一件事我忘了,require_once("includes/widgets.php"); 不应处于任何功能或挂钩中

仅出于兴趣,如果使用foreach 环下面是我如何在我的主题中注册我的侧边栏

<?php
function pietergoosen_widgets_init() {
$mainWidgets = array (
                \'sidebar-10\' => array (
                    __( \'Main Sidebar\', \'pietergoosen\' ) => __( \'Main Sidebar for the website pages\', \'pietergoosen\' ),
                ),
                \'sidebar-11\' => array (
                    __( \'Content Sidebar\', \'pietergoosen\' ) => __( \'Additional sidebar on the right of pages\', \'pietergoosen\' ),
                ),
                // Sidebars 12, 13 and 14 not redundant as from twentyfourteen
                \'sidebar-15\' => array (   // Used in footer-functions.php   
                    __( \'Footer Widget One\', \'pietergoosen\' ) => __( \'Footer widgets\', \'pietergoosen\' ),
                ),
                \'sidebar-16\' => array (   // Used in footer-functions.php   
                    __( \'Footer Widget Two\', \'pietergoosen\' ) => __( \'Footer widgets\', \'pietergoosen\' ),
                ),
                \'sidebar-17\' => array (   // Used in footer-functions.php   
                    __( \'Footer Widget Three\', \'pietergoosen\' ) => __( \'Footer widgets\', \'pietergoosen\' ),
                ),
                \'sidebar-18\' => array (   // Used in footer-functions.php  
                    __( \'Footer Widget Four\', \'pietergoosen\' ) => __( \'Footer widgets\', \'pietergoosen\' ),
                ),
                \'sidebar-19\' => array (   // Used in content-functions.php   
                    __( \'Inside first post widget for advertising\', \'pietergoosen\' ) => __( \'Inside first post widget\', \'pietergoosen\' ),
                ),
                \'sidebar-20\' => array (   // Used in content-functions.php    
                    __( \'After first post widget\', \'pietergoosen\' ) => __( \'After first post widget for ads\', \'pietergoosen\' ),
                )
            );

foreach ( $mainWidgets as $mainId => $mainWidget ) {
foreach ($mainWidget as $mainWidgetname => $mainWidgetdescription)
    {
    register_sidebar(
        array (
                \'name\'          => __( $mainWidgetname, \'pietergoosen\' ),
                \'id\'            =>  $mainId,
                \'description\'   => __( $mainWidgetdescription, \'pietergoosen\' ),
                \'before_widget\' => \'<aside id="%1$s" class="widget %2$s">\',
                \'after_widget\'  => \'</aside>\',
                \'before_title\'  => \'<h1 class="widget-title">\',
                \'after_title\'   => \'</h1>\',
        ));
    }
}
}

add_action( \'widgets_init\', \'pietergoosen_widgets_init\' );  

SO网友:Matt Royal

为什么不使用WordPress功能locate_template(). WordPress Codex中的相关信息here

使用小部件在主题或子主题中创建一个名为includes的文件夹。然后将其添加到函数中。主题中的php。

function mywebsite_sidebars() {
    // checks in parent and child themes  
    locate_template( array( \'includes/widgets.php\' ), true, true );
}
add_action( \'after_setup_theme\', \'mywebsite_sidebars\' );

结束

相关推荐

Page full of widgets?

有没有可能创建一个只有很多小部件的页面?我看到的大多数WP站点的小部件都在侧边栏中,但我想要一个只有小部件而没有其他内容的页面。我当前使用的主题允许我向页面添加列或表,但我不知道(在任何主题中)是否可以向这些列或表单元格添加小部件?