我已经建立了多个动态侧栏来进行首页项操作。每个侧边栏都包含一个文本小部件, 我想从wp_options中检索每个小部件的内容(根据小部件ID)。
基本上, 结构为dbName-> wp_options-> option_id#92包含以下内容:
a:9:{i:2;a:0:{}i:3;a:3:
{s:5:"title";s:0:"";s:4:"text";s:2:"mainItem";s:6:"filter";b:0;}i:4;a:3:
{s:5:"title";s:0:"";s:4:"text";s:9:"leftThree";s:6:"filter";b:0;}i:5;a:3:
{s:5:"title";s:0:"";s:4:"text";s:10:"rightThree";s:6:"filter";b:0;}i:6;a:3:
{s:5:"title";s:0:"";s:4:"text";s:8:"rightTwo";s:6:"filter";b:0;}i:7;a:3:
{s:5:"title";s:0:"";s:4:"text";s:8:"rightOne";s:6:"filter";b:0;}i:8;a:3:
{s:5:"title";s:0:"";s:4:"text";s:7:"leftOne";s:6:"filter";b:0;}i:9;a:3:
{s:5:"title";s:0:"";s:4:"text";s:7:"leftTwo";s:6:"filter";b:0;}
s:12:"_multiwidget";i:1;}
[实际上全部在一行上。]
我想检索以下字符串:
- mainItem
- leftOne / leftTwo / leftThree
- rightOne / rightTwo / rightThree
这种查询的语法是什么?以及如何将其添加到PHP模板中?
#1
你可以像这样从数据库中获取有关小部件类型的所有信息:
$text_widgets = get_option( 'widget_text' );
无需使用mySQL即可实现。这将返回所有存储的”文本”类型的小部件的数组。然后, 你可以遍历此数组, 并对每个内部属性进行处理, 如下所示:
foreach ( $text_widgets as $widget ) {
extract( $widget );
// now you have variables: $mainItem, $leftOne, $leftTwo, etc.
// do something with variables
}
或者, 如果你已经知道要与之交互的小部件的ID, 则可以访问以下属性:
$mainItem = $text_widgets[17]['mainItem'];
#2
请尝试以下代码段。它返回所有小部件存储的数据的数组。
// 1. Initialize variables
$data = '';
$all_stored_widgets = array();
// 2. Get all widgets using - `$GLOBALS['wp_widget_factory']`
$all_widgets = $GLOBALS['wp_widget_factory'];
foreach ($all_widgets->widgets as $w => $value) {
$widget_data = get_option( 'widget_' . $value->id_base );
foreach ($widget_data as $k => $v) {
if( is_numeric( $k ) ) {
$data['id'] = "{$value->id_base}-{$k}";
$data['options'] = $v;
$all_widgets_css[$value->id_base][] = $data;
}
}
}
// 3. Output:
echo '<pre>';
print_r( $all_stored_widgets );
echo '</pre>';
输出如下:
评论前必须登录!
注册