2

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

[实际上都在一条线上。]

我想检索以下字符串:

  • 主要项目
  • 左一/左二/左三
  • 对一/对二/对三

这种查询的语法是什么?以及如何将其添加到 PHP 模板中?

4

2 回答 2

3

您可以从数据库中提取有关一种小部件类型的所有信息,如下所示:

$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'];
于 2009-11-13T14:49:05.140 回答
0

试试下面的代码片段。它返回所有小部件存储数据的数组。

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

输出:

在此处输入图像描述

于 2016-06-15T13:25:35.733 回答