在WordPress中使用MySQL查询检索小部件数据

我已经建立了多个动态侧栏来进行首页项操作。每个侧边栏都包含一个文本小部件, 我想从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>';

输出如下:

在此处输入图片说明

以上是 在WordPress中使用MySQL查询检索小部件数据 的全部内容, 来源链接: utcz.com/p/202395.html

回到顶部