我可以在页面管理中显示小工具管理吗?

时间:2014-04-10 作者:Jasper Kennis

我想在“页面->新建/编辑”的文本字段下显示“外观->小部件”菜单。是否可以将管理的一部分显示在其他地方?

读了一些答案,这个问题似乎被误解了。我在想办法show the widgets admin on the page edit admin screen.

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

如果我很了解您想要在元框中显示小部件的添加和删除界面。

一种简单的、有点脏的方法是使用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\' );
请注意,只有能够看到小部件的用户才能查看小部件元盒,例如,除非您为编辑器提供\'edit_theme_options\' 能力。

SO网友:Monkey Puzzle

是的,这是一个非常方便的功能。小部件的“隐藏位置”是Wordpress后端IMHO最不直观的设计之一。

您可以使用以下插件:Widgets on Pages

或者可能是一个更为最新的,如Widgetize Pages

或者您可以自己构建代码,并将其放置在管理中的其他位置(如仪表板)。教程like this 应该有助于实现这一目标。

Or 你可以使用传奇Advanced Custom Fields plugin 并创建一个或多个您自己的可选/强制“小部件”,可以添加到任何单独的页面。

结束

相关推荐

如果通过admin-ajax.php的回调函数调用IS_SIGNAL(),则不起作用

在我的single.php 我有一些这样的代码。。。if(is_singular(\'post\')) { echo \'Blog\'; } else { echo \'CPT\'; } 如果我接近single.php 通过使用从博客或CPT索引页the_permalink(), 此条件正常工作。当我打开单个博客帖子时,它会显示“Blog”,当我打开单个CPT时,它会显示“CPT”。现在的问题是如果方法single.php 通过的某个回调函数admi