2009-11-07 7 views
2

J'ai construit plusieurs barres latérales dynamiques pour la manipulation des éléments de la première page. Chaque barre latérale contient un widget Texte et je souhaite récupérer le contenu de chaque widget (en fonction de l'ID du widget) depuis wp_options.Récupération de données de widget avec une requête MySQL dans WordPress

Fondamentalement, la structure est dbName -> wp_options -> option_id #92 contient ce qui suit:

 
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;} 

[fait sur une seule ligne.]

Je veux récupérer les chaînes suivantes:

  • mainItem
  • leftOne/leftTwo/leftThree
  • rightone/rightTwo/rightThree

Quelle est la syntaxe pour une telle requête ? Et comment puis-je l'ajouter au template PHP?

Répondre

3

Vous pouvez tirer toutes les informations sur un type de widget de la base de données comme ceci:

$text_widgets = get_option('widget_text'); 

Il n'y a pas besoin d'utiliser mySQL pour obtenir cela. Cela retournera un tableau de tous les widgets stockés du type 'texte'. Ensuite, vous pouvez faire une boucle à travers ce tableau et faire des choses avec les propriétés internes de chaque façon:

foreach ($text_widgets as $widget) { 
    extract($widget); 
    // now you have variables: $mainItem, $leftOne, $leftTwo, etc. 
    // do something with variables 
} 

Ou, si vous connaissez déjà les ID des widgets que vous souhaitez interagir avec, vous pouvez accéder aux propriétés comme celui-ci :

$mainItem = $text_widgets[17]['mainItem']; 
0

Essayez l'extrait de code ci-dessous. Il retourne le tableau de tous les widgets stockés.

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

sortie:

enter image description here