新的Wordpress主题不显示管理区域中的小部件

时间:2013-11-27 12:14:00

标签: php wordpress

我正在创建新的Wordpress主题。它正在工作,但没有在管理面板中显示小部件栏。 这是我的代码:

<?php get_header(); ?>
<div class="wrapper">

    <!--Navigation start-->
    <div class="navigation_content">
        <nav>
        <ul>

<?php $args = array(
            'depth'       => 0,
            'sort_column' => 'menu_order, post_title',
            'menu_class'  => 'menu',
            'include'     => '',
            'exclude'     => '',
            'echo'        => true,
            'show_home'   => true,
            'link_before' => '',
            'link_after'  => '' );
?>
        <li class=""><?php wp_page_menu( $args ); ?></li>
        </ul>
        </nav>
    </div>
    <!--Navigation start-->

    <!-- body content start-->
    <div class="body_content">


    <?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <!--end post header-->
    <div class="entry clear">
    <?php if ( function_exists( 'add_theme_support' ) ) the_post_thumbnail(); ?>
    <p><?php the_content(); ?></p>
    <?php //edit_post_link(); ?>
    <?php wp_link_pages(); ?>
    </div><!--end entry-->
     </div><!--end post-->
    <?php endwhile; /* rewind or continue if all posts have been fetched */ ?>

    <?php else : ?>
    <?php endif; ?>
 <?php get_sidebar(); ?>
<?php get_footer(); ?>

这是我的函数文件代码来注册小部件:

function ccp_widgets_init() {
    register_sidebar( array(
        'name'          => __( 'Main Widget Area', 'ccp' ),
        'id'            => 'sidebar-1',
        'description'   => __( 'Appears in the footer section of the site.', 'ccp' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget'  => '</aside>',
        'before_title'  => '<h3 class="widget-title">',
        'after_title'   => '</h3>',
    ) );

我错过了代码吗?

由于

2 个答案:

答案 0 :(得分:1)

在ccp_widgets_init函数之后的functions.php中添加以下代码。

add_action( 'widgets_init', 'ccp_widgets_init' );

答案 1 :(得分:0)

还有另一种方式。

绝对使用儿童主题

在您的子主题文件夹中:

  1. 创建名为widgets的文件夹
  2. 将您的小部件放在那里
  3. 即。

    wp-content/themes/my-child-theme/widgets/my_widget.php
    

    在您的小部件的末尾有不需要来挂钩&#39;它像大多数帖子所说的那样进行任何行动

    function register__my_widget() {
    register_widget( 'my_widget_class_name_exends_WP_Widget_class' );
    }
    
    add_action( 'widgets_init', 'register__my_widget' );
    

    所以最后只需一行就可以正常注册: - register_widget(&#39; my_widget_class_name_exends_WP_Widget_class&#39;)见下文:

        <?php function get_recent_post( $beforewidget, $afterwidget, $beforetitle, $aftertitle ){ ?>
    
        <?php echo $beforewidget; ?>
        <?php echo $beforetitle; ?>Recent Posts<?php echo $aftertitle; ?>
    
        <ul class="rp-widget">
    
            <?php query_posts( array ( 'category_name' => 'blog', 'posts_per_page' => -1 ) );
                    while ( have_posts() ) : the_post(); ?>
            <li>....
    
    
        ....very boring widget code, yawn...
    
    
        ...instance ) {
        // outputs the content of the widget
        get_recent_post( $args['before_widget'], $args['after_widget'], $args['before_title'], $args['after_title'] );
        }
    
        }
        register_widget( 'my_widget_class_name_exends_WP_Widget_class' );
    

    重要的一点是最后一行 - &#34; register_widget&#34;位。

    的Nb。所有小部件都扩展了WP_widget类(我认为它是一个类 - 将在java / c ++中)所以你注册了你的类名

    3.然后在你的孩子 - 主题的函数中.php添加这一行

    get_template_part('widgets/my_widget');
    

    你应该很时髦!

    Nb:

    1. 添加到您的子主题functions.php的行应添加到任何函数之外
    2. 路径应该存在,即。窗口小部件/
    3. 应该是你的文件的名称减去.php部分
    4. (使用单独的文件夹并不是必需的,但它有助于保持代码的有序性,因此如果您在子主题中添加了一个小部件文件夹并将my_widget.php放在那里,那么point是有效的。

      如果您没有在您的子主题文件夹中添加小部件文件夹,那么您只需使用

      get_template_part('my_widget');
      

      在你的孩子的function.php中 )

      这样做有什么好处?

      • 您可以将代码分开,使其更加模块化
      • 你最终没有一个怪物大小的functions.php文件
      • 应该更容易维护或修改