Problem Summary:
我正在使用FireHP在自定义函数中分析变量,但它不会像我预期的那样在控制台中显示它们的内容。我还使用了var\\u dump(),它返回NULL。
问题详细信息:我正在使用FireHP,正如@brasofilo所描述的,如上所示https://wordpress.stackexchange.com/a/71599/41479 . 这通常非常有用,但我不明白为什么有时我无法在控制台中看到变量的内容。
这是一个具体的例子page-sr2.php:
<?php get_header(); ?>
<div id="main">
<div id="primary">
<div id="content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( \'content\', \'page\' ); ?>
<?php get_template_part(\'nav_menu\', \'explore\');?>
<?php logit( $wp_query, \'$wp_query:\' ); ?> /*Logit function from @brasofilo*/
<?php logit( $variable, \'$variable: \'); ?>
<?php var_dump($variable); ?>/* This outputs NULL on the page*/
<?php endwhile; // end of the loop. ?>
</div><!-- #content -->
<?php// get_sidebar(); ?>
<div class="clear"></div>
</div><!-- #primary -->
</div>
<?php get_footer(); ?>
</div>
<小时>英寸
functions.php 我正在使用自定义的pre\\u get\\u posts操作:
add_action(\'pre_get_posts\', \'page_sr2_pgp\');
function page_sr2_pgp( $query )
{
if( is_page(\'sr2\') ){
return $query;
}
//global $variable; //tried this, didn\'t help
$variable ="something";
logit( $variable, \'$variable: \');
if( isset($_GET[\'yr\']) )
{
$query->set(\'meta_key\', \'yr\');
$query->set(\'meta_value\', $_GET[\'year\']);
}
// always return
return $query;
}
结果是
logit()
适用于
$wp_query
, 但不是为了
$variable
.
Note: 是的,我打电话来logit( $variable, \'$variable: \');
在两者中page-sr2.php
在函数中page_sr2_pgp
的内部functions.php
. 我这样做是因为我不知道哪个位置是正确的,我也不相信这会造成问题。
SO网友:sakibmoon
It显示器NULL
, 因为它不存在。
如果要在定义全局变量的位置以外的其他函数中使用全局变量,则必须再次将其声明为全局变量。如果省略global关键字,它将在该函数作用域中定义,而不是在全局作用域中定义。
在您的functions.php
使用global
关键字
add_action(\'pre_get_posts\', \'page_sr2_pgp\');
function page_sr2_pgp( $query )
{
...
...
//uncomment this line
global $variable;
$variable ="something";
logit( $variable, \'$variable: \');
...
...
return $query;
}
在中
page-sr2.php
, 重新声明为
global
<?php get_header(); ?>
<div id="main">
...
...
<?php logit( $wp_query, \'$wp_query:\' ); ?> /*Logit function from @brasofilo*/
<?php global $variable; ?>
<?php logit( $variable, \'$variable: \'); ?>
...
...
</div>