我在functions.php文件中有一个定义某些变量的函数:
add_action( 'the_post', 'paginate_slide' );
function paginate_slide( $post ) {
global $pages, $multipage, $numpages;
if( is_single() && get_post_type() == 'post' ) {
$multipage = 1;
$id = get_the_ID();
$custom = array();
$pages = array();
$i = 1;
foreach( get_post_custom_keys() as $key )
if ( false !== strpos( $key, 'slide' ) )
$custom[$key] = get_post_meta( $id, $key, true);
while( isset( $custom["slide{$i}-title"] ) ) {
$page = '';
$tzTitle = $custom["slide{$i}-title"];
$tzImage = $custom["slide{$i}-image"];
$tzDesc = $custom["slide{$i}-desc"];
$tzEmbed = $custom["slide{$i}-embed"];
$page = "<h2>{$tzTitle}</h2><img src='{$tzImage}' />";
$pages[] = $page;
$i++;
}
$numpages = count( $pages );
}
}
我想在template.php文件中输出一些这样的变量,如:<?php echo $tzDesc; ?>
,但我似乎无法让它工作。根据我对variables scope的理解,为了在另一个地方调用这些变量,我需要在全局范围内定义它们,并像在$pages, $multipage, $numpages;
中那样将它们称为全局函数。这应该允许我将这些变量插入我需要的地方。问题是当我将它们从函数中取出并在全局范围内定义它们时,整个函数停止工作。
我如何构建这个,以便我可以在网站的任何地方调用<?php echo $tzDesc; ?>
并让它回显定义的信息?
我不知道这是否重要,但这是在WordPress网站上。
答案 0 :(得分:2)
如果您仍想使用<?php echo $tzDesc; ?>
,则需要将$tzDesc
定义为全局变量。但是,我不建议这样做,因为全局变量被认为是差编程实践。
更好的解决方案是将paginate_slide()
添加$tzDesc
(和其他值)添加到$post
对象。这样,只要您调用the_post()
,就可以访问这些变量。如果你走这条路线,一定要命名变量:
$post->ns_tzDesc = $tzDesc;