Wordpress在小部件中创建小部件区域

时间:2017-12-03 13:58:08

标签: php wordpress widget

我正在尝试在另一个小部件中插入自定义小部件区域,但不知道从哪里开始。我是否需要在窗口小部件类构造函数中注册具有唯一ID的新窗口小部件区域?

我想要实现的目标: 插入包含小部件区域的部分小部件。 使用窗口小部件区域将自定义窗口小部件插入该部分。

<?php
    function dov_load_widget_default( ) {
            register_widget( 'section' );
    }
    add_action( 'widgets_init', 'dov_load_widget_default' );

    class section extends WP_Widget {
            function __construct( ) {
                    parent::__construct(
                            'section',
                            __( 'Portfolio sections', 'dov_portfolio' ),
                            array( 'description' => __( 'Default section for widgets', 'dov_portfolio' ) )
                    );
            }

            // Creating widget front-end
            public function widget( $args, $instance ) {

            }

            // Widget Backend
            public function form( $instance ) {

            }

            // Updating widget replacing old instances with new
            public function update( $new_instance, $old_instance ) {
                    $instance = array( );
                    return $instance;
            }
    }

&GT;

1 个答案:

答案 0 :(得分:0)

不知道它是否正确,但似乎有效。

    function dov_load_sidebars( ) {
            register_sidebar( array(
                    'id'   => 'portfolio_sections',
                    'name' => __( 'Portfolio sections', 'dov_portfolio' )
            ));

            $sections = wp_get_sidebars_widgets( );
            if( isset( $sections[ 'portfolio_sections' ] ) ) :
                    $sections = $sections[ 'portfolio_sections' ];
                    foreach( $sections as $section ) :
                            register_sidebar( array(
                                    'id' => $section,
                                    'name' => __( 'Portfolio section', 'dov_portfolio' ) . ': ' . $section
                            ));
                    endforeach;
            endif;
    }
    add_action( 'widgets_init', 'dov_load_sidebars' );

编辑:插入部分小部件后,小部件区域不会刷新。如何刷新它们或者我应该使用js添加它们?