2009-11-07 5 views
2

전 프론트 페이지 항목 조작을 위해 여러 동적 사이드 바를 구축했습니다. 각 사이드 바에는 텍스트 위젯이 포함되어 있으며 wp_options에서 각 위젯의 컨텐츠 (위젯 ID에 따라)를 검색하려고합니다. 하나 개의 라인에 실제로WordPress에서 MySQL 쿼리로 위젯 데이터 검색

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

[모든 :

기본적 구조 dbName -> wp_options -> option_id #92에는 다음이 포함된다.]

나는 다음과 같은 문자열을 검색 할 :

  • MAINITEM을
  • leftOne/leftTwo/leftThree 이러한 쿼리 구문을 무엇
  • rightOne/rightTwo/rightThree

? 어떻게 PHP 템플릿에 추가 할 수 있습니까?

답변

3

은 당신과 같이 데이터베이스에서 위젯의 유형에 대한 모든 정보를 당길 수 :이를 얻기 위해 MySQL을 사용 할 필요가

$text_widgets = get_option('widget_text'); 

없습니다. 이렇게하면 'text'유형의 모든 저장된 위젯의 배열이 반환됩니다. 그런 다음이 배열을 통해 루프 수 등과 같은 각각의 내부 특성을 가진 물건을 할 : 당신은 이미 당신이 상호 작용 할 위젯의 ID의를 알고있는 경우

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

또는,이 같은 속성에 액세스 할 수 있습니다 :

$mainItem = $text_widgets[17]['mainItem']; 
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>'; 

출력 :

enter image description here

관련 문제