如何:检查WordPress中的全局变量


22

人们通常对如何从全局对象/变量获取数据感到困惑

问题:您可以通过哪些方式检查全局变量?


编写此Q的原因是,WA在这里经常需要它。我只是想将其作为收藏夹链接到这里(人们通常不看github gist链接)。

如果出现错误或您认为解释中缺少内容,请随时修改示例。如果您想添加其他有用的内容,请将每个内容添加为一个答案。谢谢。


这应该是社区Wiki,或者改成问题。
t31os 2011年

@ t31os你能做到吗?我什至不知道在哪里可以找到社区Wiki ...
Kaiser

我想我可以预先时处于测试阶段,而不是现在虽然,代表的要求更高,可能要问一个更高的声望用户标记了一个问题,维基,也许@Rarst或@MikeSchinkel可以..
t31os

@MikeSchinkel @Rarst @Jan Fabry-push
kaiser

Answers:


12

或者,如果您很懒,只需安装调试栏插件。

它将添加一个按钮到管理栏,单击该按钮将显示一个面板,其中包含所有有用的信息,包括弃用通知,WP_Query变量和SQL查询日志。


绝对正确。但是它不会向您说明如何访问全局变量/对象以及如何从中获取零件。
kaiser

顺便说一句:您能不能简单说明一下它是如何工作的?我想这可能/确实会帮助扩展此“ how-to基础” -AQ。
kaiser

@kaiser:完成。
scribu

4

如何检查数据:

使用此功能可洞悉当前请求/ wp_query中可以使用的功能。

function inspect_wp_query() 
{
  echo '<pre>';
    print_r($GLOBALS['wp_query'])
  echo '</pre>';
}
// If you're looking at other variables you might need to use different hooks
// this can sometimes be a little tricky.
// Take a look at the Action Reference: http://codex.wordpress.org/Plugin_API/Action_Reference
add_action( 'shutdown', 'inspect_wp_query', 999 ); // Query on public facing pages
add_action( 'admin_footer', 'inspect_wp_query', 999 ); // Query in admin UI

顺便说一句:

    // this:
    global $wp_query;
    $wp_query;
    // is the same as
    $wp_query;
    // and as this:
    $GLOBALS['wp_query'];

// You can do this with each other global var too, like $post, etc.

如何实际获取数据:

// Example (not the best one)
(Object) WP_Query -> post (stdClass) -> postdata (Array)

// How to get the data:
// Save object into var
$my_data = new WP_Query; // on a new object
// or on the global available object from the current request
$my_data = $GLOBALS['wp_query'];

// get object/stdClass "post"
$my_post_data = $my_data->post;
// get Array
$my_post_data = $my_data['post'];


示例
列出所有侧边栏名称?
(生成带有所有侧边栏的下拉/选择对象global $wp_registered_sidebars


0

根据加载脚本和呈现最终输出的过程中的某些位置,上面提到的某些变量可能不会出现。如果您想要一个相当包容的视图,也许有点极端,请尝试:

var_dump($GLOBALS);

var_dump也很不错,它可以告诉您数据的类型和格式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.