web-dev-qa-db-fra.com

Puis-je afficher l'administrateur du widget dans la page d'administration?

Je voudrais afficher le menu 'Apparence -> Widgets' sous le champ de texte dans 'Pages -> nouveau/modifier'. Est-il possible de prendre une partie de l'administrateur et de la montrer ailleurs?

En lisant certaines des réponses, il semble que cette question soit mal comprise. Je cherche un moyen de afficher les widgets admin sur l'écran d'édition de page .

4
Jasper Kennis

Si je comprends bien, vous souhaitez afficher les widgets en ajoutant et en supprimant l'interface dans une boîte à méta.

Une manière simple, peu sale, utilise un iframe:

function metaboxed_widgets_admin() {
  if ( ! current_user_can( 'edit_theme_options' ) ) return;
  add_meta_box('metaboxed_widgets', __('Widgets'), 'metaboxed_widgets_admin_cb', 'page');
}
add_action( 'add_meta_boxes', 'metaboxed_widgets_admin' );

function metaboxed_widgets_admin_cb() {
  if ( ! current_user_can( 'edit_theme_options' ) ) return;
  $format = '<div style="margin:0px;padding:0px;">';
  $format .= '<iframe src="%s" frameborder="0" %s></iframe></div>';
  // add a query arg to recognize when inside iframe, used to hide menu and admin bar
  $url = add_query_arg(
    array( 'iframe'=> wp_create_nonce('widgets') ), admin_url( 'widgets.php' )
  );
  printf( $format, $url, 'style="height:1200px;width:100%;" height="100%" width="100%"' );
}

function metaboxed_widgets_hide_stuff() {
  if ( ! is_admin() || get_current_screen()->id !== 'widgets' ) return;  
  $iframe = filter_input( INPUT_GET, 'iframe', FILTER_SANITIZE_STRING );
  if ( wp_verify_nonce( $iframe, 'widgets' ) ) {
    echo '<style>'
    . '#wpadminbar, #adminmenuback, #adminmenuwrap, #wpfooter, '
    . '#screen-meta-links, .wrap > h2 { display:none!important; }'
    . '#wpcontent { margin-left:25px!important; }'
    . '.wrap{ margin-top:0!important; }</style>';
  }
}
add_action( 'admin_head-widgets.php', 'metaboxed_widgets_hide_stuff' );

Notez que seuls les utilisateurs pouvant voir les widgets verront la metabox du widget, par exemple. les éditeurs ne verront rien, à moins que vous ne leur donniez la capacité 'edit_theme_options'.

2
gmazzap

Oui, c’est une fonctionnalité très utile. La "cachette" des widgets est l’une des conceptions les moins intuitives du backend de Wordpress, IMHO.

Vous pouvez utiliser un plugin tel que: Widgets on Pages

Ou peut-être une version plus récente telle que Widgetize Pages

Ou vous pouvez créer le code vous-même et le placer ailleurs dans l'administrateur (tel que le tableau de bord). Un tutoriel comme celui-ci devrait vous aider dans cette quête.

Ou vous pouvez utiliser le plugin légendaire Advanced Custom Fields et créer un ou plusieurs de vos propres "widgets" facultatifs/obligatoires pouvant être ajoutés à une page individuelle.

1
Monkey Puzzle