在模板的header.php中设置的全局变量无法在footer.php中回显

时间:2013-09-18 作者:Derfder

E、 我在标题中设置了这个。我的模板中的php:

<?php $postidextra = get_the_ID(); ?> 
<?php $sidebar_state = get_post_meta($postidextra , \'rw_sidebar_state\', true); ?>
我可以在标题中回显$sidebar\\u状态。php,它正在工作。

然而,当我尝试从页脚回显此变量时。php或页面。php它不起作用,我需要重复我的代码来获取帖子id和帖子meta等。这是重复的,是一种糟糕的做法。

Why it\'s not available if it is just include?

如何使变量在WP模板文件的所有文件中可用?

UPDATE:

在建议使用全局变量后,我仍然无法echo $sidebar_state; 在页脚中。php。标题中的我的代码。php如下所示:

 <?php global $postidextra; ?> 
 <?php $postidextra = get_the_ID(); ?>
 <?php global $sidebar_state; ?>
 <?php $sidebar_state = get_post_meta($postidextra , \'rw_sidebar_state\', true); ?>
页脚。php如下所示:

<?php
/**
 * The template for displaying the footer.
 *
 * Contains footer content and the closing of the
 * #main and #page div elements.
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */
?>
    </div><!-- #main .wrapper -->
    <footer id="colophon" role="contentinfo">
        <div class="site-info">
            <?php echo $sidebar_state; ?>
        </div><!-- .site-info -->
    </footer><!-- #colophon -->
</div><!-- #page -->

<?php wp_footer(); ?>
</body>
</html>
<?php echo $sidebar_state; ?> 仅在标题中显示wokring。php。知道我应该在代码中更改什么吗?

3 个回复
SO网友:Derfder

我只需要在声明之前使用全局变量AND 在回声之前。

<?php global $postidextra; $postidextra = "20"; ?>
然后

<?php global $postidextra; echo $postidextra; ?>
谢谢G.M.的建议。

SO网友:Got The Fever Media

法典规定您只能使用get_the_id() 在里面the Loop

SO网友:Chip Bennett

声明的全局变量header.php 无法在中访问footer.php 是因为header.phpfooter.php 是包含在给定模板文件中的模板零件文件,通过get_header()get_footer(), 分别地

这些模板标记中的每一个都是PHP的奇特包装器include() 作用在PHP中,全局变量不会传递给包含的文件,因此在未重新声明的情况下无法引用。

解决方法很简单declare the global variable in footer.php 在引用之前。

结束

相关推荐

WPML in custom page templates

我有一个Wordpress网站,使用WPML从丹斯克翻译成英语。在其中,我有一个页面,它使用自定义页面模板来显示所有帖子的标题。遗憾的是,它两次显示所有帖子:原文和译文。这是我的代码:<ul id=\"archive-list\"> <?php $args = array( \'lang\' => ICL_LANGUAGE_CODE, \'numberposts\' => \'-1\',