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

Posted

技术标签:

【中文标题】在 WordPress 中使用 MySQL 查询检索小部件数据【英文标题】:Retrieving widget data with MySQL query in WordPress 【发布时间】:2010-12-14 05:21:44 【问题描述】:

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

[其实都是一行。]

我想检索以下字符串:

主要项目 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】:

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

//  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 查询检索小部件数据的主要内容,如果未能解决你的问题,请参考以下文章

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

如何在wordpress中使用mysql事务?

如何在 wordpress 中运行 mysql 查询?

PHP wordpress 中的一次查询中的双重 MySQL 查询

改进 WordPress 主题中的 MySQL Select 语句

数据库:MySQL实战;左链接;查询WordPress数据库中的文章内容