2015-06-11 92 views
0

我正在構建一個插件,我需要能夠在WordPress網站的管理員端顯示指定的帖子。Wordpress parse_query問題

如何將我的帖子ID的數組掛到post_in中?

// Show specified Posts 
private function ShowPosts($ps) 
{ 
    var_dump($ps); // shows the id's 
    echo '<hr />'; 
    add_filter('parse_query', function() { 
     global $ps; 
     var_dump($ps); // Shows 3 nulls 
     global $query, $pagenow, $post_type; 
     if($pagenow == 'edit.php' && $post_type == 'post'){ 
      $query->query_vars['post__in'] = $ps; 
     } 
    }); 
} 

第一個var_dump顯示了我的ID數組,而第二個沒有。

我在這裏做錯了什麼?

+0

你爲什麼全球在從%PS? – cyroxis

+0

你也可以在wordpress.stackexchange.com上詢問 –

回答

2

您已經在功能,所以你不能聲明此全局變量的最簡單的解決,如果你想

private function ShowPosts($ps) 
{ 
    $_SESSION['psvalue'] = $ps; // shows the id's 
    echo '<hr />'; 
    add_filter('parse_query', function() { 
     $ps = $_SESSION['psvalue']; 
     global $query, $pagenow, $post_type; 
     if($pagenow == 'edit.php' && $post_type == 'post'){ 
      $query->query_vars['post__in'] = $ps; 
     } 
    }); 
} 

其他修復使用global關鍵字

private function ShowPosts($ps) 
    { 
     $GLOBALS['psvalue'] = $ps; 
     echo '<hr />'; 
     add_filter('parse_query', function() { 
      $ps = $GLOBALS['psvalue']; 
      global $query, $pagenow, $post_type; 
      if($pagenow == 'edit.php' && $post_type == 'post'){ 
       $query->query_vars['post__in'] = $ps; 
      } 
     }); 
    } 
+0

如果你適合你,接受答案:) –