Le widget WordPress ne s’affiche pas sur (AdminPanel)

Publié par Jean-Michel le

J’essaie de créer un widget pour afficher quelque chose mais ne s’affiche pas dans la section admin-> apparence . ci-dessous le code que j’écris sur le fichier functions.php ci-dessous la fonction fonctionne sauf le widget. comme menu, icône, fonctionne bien, je suis fatigué de créer un widget. toute personne ici qui m’aident cordialement. et merci d’avance.

entrez la description de l'image ici

<?php
class jpen_Category_List_Widget extends WP_Widget {
  // php classnames and widget name/description added
  function __construct() {
    $widget_options = array(
      'classname' => 'jpen_category_list_widget',
      'description' => 'Add a nicely formatted list of categories to your sidebar.'
    );
    parent::__construct( 
      'jpen_category_list_widget', 
      'Simple Blog Theme Category List', 
      $widget_options 
    );
  }
  // create the widget output
  function widget( $args, $instance ) {
    
    $title = apply_filters( 'widget_title', $instance[ 'title' ] );
    $categories = get_categories( array(
      'orderby' => 'name',
      'order'   => 'ASC'
      ) );
    $cat_count = 0;
    $cat_col_one = [];
    $cat_col_two = [];
    foreach( $categories as $category ) {
      $cat_count ++;
      $category_link = sprintf( 
          '<li class="list-unstyled"><a href="%1$s" alt="%2$s">%3$s</a></li>',
          esc_url( get_category_link( $category->term_id ) ),
          esc_attr( sprintf( __( 'View all posts in %s', 'textdomain' ), $category->name ) ),
          esc_html( $category->name )
      );
      if ($cat_count % 2 != 0 ) {
        $cat_col_one[] = $category_link;
      } else {
        $cat_col_two[] = $category_link;
      }
    }
    echo $args['before_widget'] . $args['before_title'] . $title . $args['after_title'];
    ?><div class="row">
      <div class="col-lg-6"><?php
        foreach( $cat_col_one as $cat_one ) {
          echo $cat_one;
        } ?>
      </div>

      <div class="col-lg-6"><?php 
        foreach( $cat_col_two as $cat_two ) {
          echo $cat_two;
        } ?>
      </div>

    </div><?php
    echo $args['after_widget'];
  }
  function form( $instance ) { 
    $title = ! empty( $instance['title'] ) ? $instance['title'] : ''; ?>
    <p>
      <label for="<?php echo $this->get_field_id( 'title' ); ?>">Title:</label>
      <input type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>" />
    </p>
    <p>This widget displays all of your post categories as a two-column list (or a one-column list when rendered responsively).</p>
  <?php }
  // Update database with new info
  function update( $new_instance, $old_instance ) { 
    $instance = $old_instance;
    $instance[ 'title' ] = strip_tags( $new_instance[ 'title' ] );
    return $instance;
  }
}
// register the widget
function jpen_register_widgets() { 
  register_widget( 'jpen_Category_List_Widget' );
}
add_action( 'widgets_init', 'jpen_register_widgets' );
////////////////////
add_theme_support('menu');
function register_newtheme_menu(){
    register_nav_menus(
            array(
                'main-menu'=>_('Main Menu')
            )
    );
    
}

add_action('init','register_newtheme_menu');


function add_menuclass($ulclass) {
   return preg_replace('/<a /', '<a class="navigation-link w-nav-link" ', $ulclass);
}
add_filter('wp_nav_menu','add_menuclass');

function theme_prefix_setup() {
	
	add_theme_support( 'custom-logo', array(
		'height'      => 100,
		'width'       => 400,
		'flex-width' => true,
	) );

}
add_action( 'after_setup_theme', 'theme_prefix_setup' );

?>

Solution n°1 trouvée

Nadeem

Vous devez ajouter register_sidebar dans votre fichier functions.php uniquement après que le menu des widgets apparaisse dans la zone de votre panneau d’administration.

pour plus d’informations, vous pouvez visiter le lien ci-dessous. https://codex.wordpress.org/Function_Reference/register_sidebar

et par exemple coller le code ci-dessous dans votre fichier functions.php

function customtheme_widgets_init() {
register_sidebar( array(
    'name'          => __( 'Sidebar', 'customtheme' ),
    'id'            => 'sidebar-1',
    'description'   => __( 'Add widgets here to appear in your sidebar.', 'customtheme' ),
    'before_widget' => '<section id="%1$s" class="widget %2$s">',
    'after_widget'  => '</section>',
    'before_title'  => '<h2 class="widget-title">',
    'after_title'   => '</h2>',
) );

add_action( 'widgets_init', 'customtheme_widgets_init' );

J’espère que cela vous aidera.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *