web-dev-qa-db-fra.com

Comment insérer un widget personnalisé dans la barre latérale personnalisée lors de l'activation du thème?

J'ai créé un widget personnalisé et je souhaite l'insérer dans toute barre latérale que je voulais activer par thème. C'est possible?

Btw, voici le code que j'ai utilisé pour mes barres latérales

function awesome_register_sidebars() {
    register_sidebar(
        array(
            'id' => 'sidebar-footer-1',
            'name' => __( 'Footer Nav  Links 1', 'Awesome' ),
            'description' => __( 'A short description of the sidebar.', 'Awesome' ),
            'before_widget' => '<div class="footer-link">',
            'after_widget' => '</div>',
            'before_title' => '<h3 class="footer-link-head">',
            'after_title' => '</h3>'
                ));
register_sidebar(
        array(
            'id' => 'sidebar-footer-2',
            'name' => __( 'Footer Nav Links 2', 'Awesome' ),
            'description' => __( 'A short description of the sidebar.', 'Awesome' ),
            'before_widget' => '<div class="footer-link">',
            'after_widget' => '</div>',
            'before_title' => '<h3 class="footer-link-head">',
            'after_title' => '</h3>'
                ));
register_sidebar(
        array(
            'id' => 'sidebar-footer-3',
            'name' => __( 'Footer Nav  Links 3', 'Awesome' ),
            'description' => __( 'A short description of the sidebar.', 'Awesome' ),
            'before_widget' => '<div class="footer-link">',
            'after_widget' => '</div>',
            'before_title' => '<h3 class="footer-link-head">',
            'after_title' => '</h3>'
                ));
}
add_action( 'widgets_init', 'awesome_register_sidebars' );

Et voici le code que j'ai utilisé pour le widget:

<?php

class footerlinks_widget extends WP_Widget
{
    // Create Multiple WordPress Widgets
    function __construct()
    {
        parent::__construct('footerlinks_widget', __('Footer Links', 'footer_menu_domain'), array(
            'description' => __('Adds menu and links to footer', 'footer_menu_domain')
        ));
    }

    public function widget($args, $instance)
    {
        $foot_nav_1       = apply_filters('foot_nav_1', $instance['foot_nav_1']);
        $url_link_1       = apply_filters('url_link_1', $instance['url_link_1']);
        $url_name_1       = apply_filters('url_name_1', $instance['url_name_1']);
        $url_link_2       = apply_filters('url_link_2', $instance['url_link_2']);
        $url_name_2       = apply_filters('url_name_2', $instance['url_name_2']);
        $url_link_3       = apply_filters('url_link_3', $instance['url_link_3']);
        $url_name_3       = apply_filters('url_name_3', $instance['url_name_3']);
        $url_link_4       = apply_filters('url_link_4', $instance['url_link_4']);
        $url_name_4       = apply_filters('url_name_4', $instance['url_name_4']);
        $url_link_5       = apply_filters('url_link_5', $instance['url_link_5']);
        $url_name_5       = apply_filters('url_name_5', $instance['url_name_5']);
        $url_link_6       = apply_filters('url_link_6', $instance['url_link_6']);
        $url_name_6       = apply_filters('url_name_6', $instance['url_name_6']);
        $url_link_7       = apply_filters('url_link_7', $instance['url_link_7']);
        $url_name_7       = apply_filters('url_name_7', $instance['url_name_7']);
        $open_links_newtab  = $instance['open_links_newtab'] ? 'true' : 'false';
        if($open_links_newtab == "true") {
        $newtablink = 'target="_blank"';
        }
        $footermenu = '<h3 class="footer-link-head test">'.$foot_nav_1.'</h3> 
        <p><a title="'.$url_name_1.'" href="'.$url_link_1.'"'.$newtablink.'">'.$url_name_1.'</a></p> 
        <p><a title="'.$url_name_2.'" href="'.$url_link_2.'"'.$newtablink.'>'.$url_name_2.'</a></p> 
        <p><a title="'.$url_name_3.'" href="'.$url_link_3.'"'.$newtablink.'>'.$url_name_3.'</a></p> 
        <p><a title="'.$url_name_4.'" href="'.$url_link_4.'"'.$newtablink.'>'.$url_name_4.'</a></p> 
        <p><a title="'.$url_name_5.'" href="'.$url_link_5.'"'.$newtablink.'>'.$url_name_5.'</a></p> 
        <p><a title="'.$url_name_6.'" href="'.$url_link_6.'"'.$newtablink.'>'.$url_name_6.'</a></p> 
        <p><a title="'.$url_name_7.'" href="'.$url_link_7.'"'.$newtablink.'>'.$url_name_7.'</a></p>';

        echo $before_widget;
        echo $before_title . $after_title;
        echo $footermenu;
        echo $after_widget;
    }

    // Create Instance and Assign Values
    public function form($instance)
    {
        if (isset($instance['foot_nav_1'])) {
            $foot_nav_1 = $instance['foot_nav_1'];
        } else {
            $foot_nav_1 = __('Navigation', 'footer_menu_domain');
        }
            if (isset($instance['url_link_1'])) {
            $url_link_1 = $instance['url_link_1'];
        }
        if (isset($instance['url_name_1'])) {
            $url_name_1 = $instance['url_name_1'];
        }
        else {
            $url_name_1 = __('Movies', 'footer_menu_domain');
        }
        if (isset($instance['url_link_2'])) {
            $url_link_2 = $instance['url_link_2'];
        }
        if (isset($instance['url_name_2'])) {
            $url_name_2 = $instance['url_name_2'];
        }
        else {
            $url_name_2 = __('Top IMDb', 'footer_menu_domain');
        }
        if (isset($instance['url_link_3'])) {
            $url_link_3 = $instance['url_link_3'];
        }
        if (isset($instance['url_name_3'])) {
            $url_name_3 = $instance['url_name_3'];
        }
        else {
            $url_name_3 = __('DMCA', 'footer_menu_domain');
        }
        if (isset($instance['url_link_4'])) {
            $url_link_4 = $instance['url_link_4'];
        }
        if (isset($instance['url_name_4'])) {
            $url_name_4 = $instance['url_name_4'];
        }
        else {
            $url_name_4 = __('FAQ', 'footer_menu_domain');
        }
        if (isset($instance['url_link_5'])) {
            $url_link_5 = $instance['url_link_5'];
        }
        if (isset($instance['url_name_5'])) {
            $url_name_5 = $instance['url_name_5'];
        }
        else {
            $url_name_5 = __('News', 'footer_menu_domain');
        }
        if (isset($instance['url_link_6'])) {
            $url_link_6 = $instance['url_link_6'];
        }
        if (isset($instance['url_name_6'])) {
            $url_name_6 = $instance['url_name_6'];
        }
        else {
            $url_name_6 = __('Request', 'footer_menu_domain');
        }
        if (isset($instance['url_link_7'])) {
            $url_link_7 = $instance['url_link_7'];
        }
        if (isset($instance['url_name_7'])) {
            $url_name_7 = $instance['url_name_7'];
        }
        else {
            $url_name_7 = __('Contact', 'footer_menu_domain');
        }
        $instance['open_links_newtab']  = $instance['open_links_newtab'] ? 'true' : 'false';

?>

<p>

    <label for="<?php echo $this->get_field_id('foot_nav_1'); ?>"> <?php _e('Navigation Name');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('foot_nav_1');?>" name="<?php echo $this->get_field_name('foot_nav_1');?>" type="text" value="<?php echo esc_attr($foot_nav_1);?>" />
     <h4>Link #1</h4>
 <hr>
    <label for="<?php echo $this->get_field_id('url_link_1'); ?>"> <?php _e('URL');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_link_1');?>" name="<?php echo $this->get_field_name('url_link_1');?>" type="text" value="<?php echo esc_attr($url_link_1);?>" />

    <label for="<?php echo $this->get_field_id('url_name_1'); ?>"> <?php _e('Name');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_name_1');?>" name="<?php echo $this->get_field_name('url_name_1');?>" type="text" value="<?php echo esc_attr($url_name_1);?>" />
 <h4>Link #2</h4>
 <hr>
    <label for="<?php echo $this->get_field_id('url_link_2'); ?>"> <?php _e('URL');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_link_2');?>" name="<?php echo $this->get_field_name('url_link_2');?>" type="text" value="<?php echo esc_attr($url_link_2);?>" />

    <label for="<?php echo $this->get_field_id('url_name_2'); ?>"> <?php _e('Name');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_name_2');?>" name="<?php echo $this->get_field_name('url_name_2');?>" type="text" value="<?php echo esc_attr($url_name_2);?>" />
 <h4>Link #3</h4>
 <hr>
    <label for="<?php echo $this->get_field_id('url_link_3'); ?>"> <?php _e('URL');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_link_3');?>" name="<?php echo $this->get_field_name('url_link_3');?>" type="text" value="<?php echo esc_attr($url_link_3);?>" />

    <label for="<?php echo $this->get_field_id('url_name_3'); ?>"> <?php _e('Name');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_name_3');?>" name="<?php echo $this->get_field_name('url_name_3');?>" type="text" value="<?php echo esc_attr($url_name_3);?>" />
 <h4>Link #4</h4>
 <hr>
    <label for="<?php echo $this->get_field_id('url_link_4'); ?>"> <?php _e('URL');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_link_4');?>" name="<?php echo $this->get_field_name('url_link_4');?>" type="text" value="<?php echo esc_attr($url_link_4);?>" />

    <label for="<?php echo $this->get_field_id('url_name_4'); ?>"> <?php _e('Name');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_name_4');?>" name="<?php echo $this->get_field_name('url_name_4');?>" type="text" value="<?php echo esc_attr($url_name_4);?>" />
 <h4>Link #5</h4>
 <hr>
    <label for="<?php echo $this->get_field_id('url_link_5'); ?>"> <?php _e('URL');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_link_5');?>" name="<?php echo $this->get_field_name('url_link_5');?>" type="text" value="<?php echo esc_attr($url_link_5);?>" />

    <label for="<?php echo $this->get_field_id('url_name_5'); ?>"> <?php _e('Name');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_name_5');?>" name="<?php echo $this->get_field_name('url_name_5');?>" type="text" value="<?php echo esc_attr($url_name_5);?>" />
    <h4>Link #6</h4>
 <hr>
    <label for="<?php echo $this->get_field_id('url_link_6'); ?>"> <?php _e('URL');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_link_6');?>" name="<?php echo $this->get_field_name('url_link_6');?>" type="text" value="<?php echo esc_attr($url_link_6);?>" />

    <label for="<?php echo $this->get_field_id('url_name_6'); ?>"> <?php _e('Name');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_name_6');?>" name="<?php echo $this->get_field_name('url_name_6');?>" type="text" value="<?php echo esc_attr($url_name_6);?>" />
    <h4>Link #7</h4>
 <hr>
    <label for="<?php echo $this->get_field_id('url_link_7'); ?>"> <?php _e('URL');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_link_7');?>" name="<?php echo $this->get_field_name('url_link_7');?>" type="text" value="<?php echo esc_attr($url_link_7);?>" />

    <label for="<?php echo $this->get_field_id('url_name_7'); ?>"> <?php _e('Name');?></label>
    <input class="widefat" id="<?php echo $this->get_field_id('url_name_7');?>" name="<?php echo $this->get_field_name('url_name_7');?>" type="text" value="<?php echo esc_attr($url_name_7);?>" />
    <br /> <br /> 

    <label for="<?php echo $this->get_field_id('open_links_newtab');?>"><?php _e('Open links in new tab'); ?></label>
    <input class="checkbox" type="checkbox" <?php checked($instance['open_links_newtab'], 'true'); ?> id="<?php echo $this->get_field_id('open_links_newtab'); ?>" name="<?php echo $this->get_field_name('open_links_newtab'); ?>" />

</p>

<?php
    }

    // Updating widget replacing old instances with new
    function update($new_instance, $old_instance)
    {
        $instance                           = array();
        $instance['foot_nav_1'] = (!empty($new_instance['foot_nav_1'])) ? strip_tags($new_instance['foot_nav_1']) : '';
        $instance['url_link_1'] = (!empty($new_instance['url_link_1'])) ? strip_tags($new_instance['url_link_1']) : '';
        $instance['url_name_1'] = (!empty($new_instance['url_name_1'])) ? strip_tags($new_instance['url_name_1']) : '';
        $instance['url_link_2'] = (!empty($new_instance['url_link_2'])) ? strip_tags($new_instance['url_link_2']) : '';
        $instance['url_name_2'] = (!empty($new_instance['url_name_2'])) ? strip_tags($new_instance['url_name_2']) : '';
        $instance['url_link_3'] = (!empty($new_instance['url_link_3'])) ? strip_tags($new_instance['url_link_3']) : '';
        $instance['url_name_3'] = (!empty($new_instance['url_name_3'])) ? strip_tags($new_instance['url_name_3']) : '';
        $instance['url_link_4'] = (!empty($new_instance['url_link_4'])) ? strip_tags($new_instance['url_link_4']) : '';
        $instance['url_name_4'] = (!empty($new_instance['url_name_4'])) ? strip_tags($new_instance['url_name_4']) : '';
        $instance['url_link_5'] = (!empty($new_instance['url_link_5'])) ? strip_tags($new_instance['url_link_5']) : '';
        $instance['url_name_5'] = (!empty($new_instance['url_name_5'])) ? strip_tags($new_instance['url_name_5']) : '';
        $instance['url_link_6'] = (!empty($new_instance['url_link_6'])) ? strip_tags($new_instance['url_link_6']) : '';
        $instance['url_name_6'] = (!empty($new_instance['url_name_6'])) ? strip_tags($new_instance['url_name_6']) : '';
        $instance['url_link_7'] = (!empty($new_instance['url_link_7'])) ? strip_tags($new_instance['url_link_7']) : '';
        $instance['url_name_7'] = (!empty($new_instance['url_name_7'])) ? strip_tags($new_instance['url_name_7']) : '';
        $instance['open_links_newtab']  = $new_instance['open_links_newtab'];
        return $instance;
    }
}

function footer_menu()
{
    register_widget('footerlinks_widget');
}

// Initialize Plugin
add_action('widgets_init', 'footer_menu');

?>
1
Archangel17

mais nous devons changer quelques petites choses si nous voulons que ce thème soit activé lorsque le thème est activé.Les changements apportés dans la fonction awesome_register_sidebars.Add ci-dessous le code contenu dans le fichier functions.php de votre thème:

function awesome_register_sidebars() {
      $sidebars = array ( 'a' => 'sidebar-footer-1', 'b' => 'sidebar- footer-2','c'=>'sidebar-footer-3' );
foreach ($sidebars as $sidebar) {
    register_sidebar(
        array (
            'name'          => $sidebar,
            'id'            => $sidebar,
            'before_widget' => '',
            'after_widget'  => ''
        )
    );
}
$active_widgets = get_option('sidebars_widgets');

if (! empty($active_widgets[ $sidebars['a'] ])
    or ! empty($active_widgets[ $sidebars['b'] ])
) {
    return;
}

$counter = 1;
$active_widgets[ $sidebars['a'] ][0] = 'footerlinks_widget-' . $counter;
$demo_widget_content[ $counter ] = array ( 'text' => "This works!\n\nAmazing!" );

$counter++;


$active_widgets[ $sidebars['a'] ][] = 'footerlinks_widget-' . $counter;

$footerlinks_widget_content[ $counter ] = array ();
update_option('widget_footerlinks_widget', $footerlinks_widget_content);

 $counter++;


   update_option('sidebars_widgets', $active_widgets);
 }
add_action( 'widgets_init', 'awesome_register_sidebars' );
1
Sonali