在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>';

输出如下:

在此处输入图片说明

来源:

https://www.srcmini02.com/67461.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?