在我的函数中设置了以下函数。php文件,以允许我的自定义帖子类型“Slideshow”工作。
add_action( \'the_post\', \'paginate_slide\' );
function paginate_slide( $post ) {
global $pages, $multipage, $numpages;
if( is_single() && get_post_type() == \'lom_slideshow\' ) {
$prefix = "slide{$i}";
$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"] ) ) {
$hide = $custom["slide{$i}-hide"];
$slidetype = $custom["slide{$i}-slidetype"];
if( \'on\' == $hide ) {
$i++;
continue;
}
$page = \'\';
$title = $custom["slide{$i}-title"];
$image = $custom["slide{$i}-image"];
$desc = $custom["slide{$i}-desc"];
$embed = $custom["slide{$i}-embed"];
if(isset($image))
$imgdisplay = "<img src=\'{$image}\' />";
else
$imgdisplay = \'\';
if( \'Video\' == $slidetype )
$page = "<div class=\'media-title\'><h2>{$title}</h2></div><div class=\'media-image\'>{$embed}</div><div class=\'media-desc\'></div>";
else
$page = "<div class=\'media-title\'><h2>{$title}</h2></div><div class=\'media-image\'>{$imgdisplay}</div><div class=\'media-desc\'>{$desc}</div>";
$pages[] = $page;
$i++;
}
$numpages = count( $pages );
}
}
此部分显示输出:
$page = "<div class=\'media-title\'><h2>{$title}</h2></div><div class=\'media-image\'>{$embed}</div><div class=\'media-desc\'></div>";
它显示在那里
the_content
在我的模板中调用。而不是在我的功能中把各个部分放在一起。php我希望能够在我的自定义帖子模板中直接调用每一篇文章。例如
<?php echo $desc; ?>
在我希望显示说明的模板文件中
<?php echo $title; ?>
我希望标题显示的位置。
我尝试了几种不同的方式,但没有任何东西可以展示。
Without starting over from scratch or redesigning my whole template how can I make these variable more modular (able to be placed at will within my template)?
SO网友:mtekk
你需要做的是$page
和$pages
变量,并对$desc
变量(以及要在函数外部访问的任何其他变量)。
您需要一个全局$descs
这将是一个数组,您将在其中$desc
值,使用类似$descs[] = $desc;
就在代码之后$pages[] = $page;
. 然后您可以访问$descs
在函数之外,请记住它是一个数组。
通常,您需要声明$desc
作为模板文件中的全局文件,您要在中使用它,例如,您需要使用以下内容:
<?php global $desc;
echo $desc;?>
最好使用一个返回或回显
$desc
变量并从模板文件中调用,例如,在函数中放置类似的内容。php:
function foo_bar()
{
$custom[$key] = get_post_meta( $id, $key, true);
return $custom["slide{$i}-desc"];
}
然后在模板文件中使用以下内容:
<?php echo foo_bar();?>
注意,这个包装函数不会按原样工作,因为它看起来像是从PHP循环构造中获取了一些东西。您可能需要将$id、$key、$i和$custom传递给函数,或者在函数中将它们声明为全局变量。在不了解背景的情况下,我无法告诉你哪种方式更适合你。