Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress:主题开发的wp_get_边栏_小部件的替代品_Php_Wordpress Theming_Wordpress - Fatal编程技术网

Php Wordpress:主题开发的wp_get_边栏_小部件的替代品

Php Wordpress:主题开发的wp_get_边栏_小部件的替代品,php,wordpress-theming,wordpress,Php,Wordpress Theming,Wordpress,wp\u get\u sidebars\u widgets()对于在侧边栏中获取有关小部件的信息非常有用。然而,WP codex声明它是一个私有函数,不能用于主题开发。。。这就是我的情况。有哪些替代方案?如何在没有它的情况下获取widgets信息?我想是用dynamic\u sidebar()和一些PHP,但我真的不知道怎么做 我想得到的是: 窗口小部件ID(通知我使用了什么窗口小部件) 用户在表单中输入的小部件数据 谢谢 好的,我找到了一个解决方案,但它看起来像是一个黑客。如果有人知道更好

wp\u get\u sidebars\u widgets()
对于在侧边栏中获取有关小部件的信息非常有用。然而,WP codex声明它是一个私有函数,不能用于主题开发。。。这就是我的情况。有哪些替代方案?如何在没有它的情况下获取widgets信息?我想是用
dynamic\u sidebar()
和一些PHP,但我真的不知道怎么做

我想得到的是:

  • 窗口小部件ID(通知我使用了什么窗口小部件)
  • 用户在表单中输入的小部件数据

谢谢

好的,我找到了一个解决方案,但它看起来像是一个黑客。如果有人知道更好的事情

我的边栏id是“homepage”,我所有的小部件id都以我的前缀开始,
nd\u home

global $wp_registered_sidebars, $wp_registered_widgets;

ob_start();
dynamic_sidebar('homepage'); //my sidebar id is 'homepage'
$sidebar_contents = ob_get_clean();

$widgetidspart1 = explode('nd_home_',$sidebar_contents); //my widgets ids start with nd_home_
for ($i = 1; $i < count($widgetidspart1); $i++) {
    $widgetidspart2 = explode('" ', $widgetidspart1[$i] );
    $widgetids[] = $widgetidspart2[0]; //id without nd_home_
}

//add nd_home_ to every widget id
foreach ( $widgetids as $id) {
    $widgetids_total[] = 'nd_home_' . $id;
}

//now I have all the ids in $widgetids_total. I can get the widget data:

foreach( $widgetids_total as $id ) {

    $option_name = $wp_registered_widgets[$id]['callback'][0]->option_name;

    $key = $wp_registered_widgets[$id]['params'][0]['number'];
    $widget_data = get_option($option_name);

    $data[] = $widget_data[$key];
}

//$data contains my widgets data
global$wp\u registed\u边栏,$wp\u registed\u小部件;
ob_start();
动态侧边栏(“主页”)//我的侧边栏id是“主页”
$sidebar_contents=ob_get_clean();
$widgetidspart1=分解($nd_home_',$sidebar_contents)//我的widgets id以nd\u home开始_
对于($i=1;$ioption\u name;
$key=$wp_注册的_小部件[$id]['params'][0]['number'];
$widget\u data=get\u option($option\u name);
$data[]=$widget_data[$key];
}
//$data包含我的widgets数据