这可能是一个php问题,而不是wordpress问题。虽然我不确定,但如果是的话,请指导我。我正在开发一个试用插件,用于插件开发第一阶段的培训。
以下是结构的简化示例:
class trial{
function trial() {
add_shortcode( \'shs_ref\', array( &$this, \'shortcode\' ) );
add_filter( \'the_content\', array( &$this, \'after_content\' ));
}
/*Run the shortcode*/
function shortcode( $atts , $content = null ) {
if ( !isset( $this->entries ) )
$this->entries = array();
array_push($this->entries,$content);
return \'What number of shortcode is this: \',count($this->entries);
}
/*Add after the page content*/
function after_content( $content ) {
foreach($this->entries as $entry) /*This one is empty?*/
$content .= $entry;
return $content;
}
}
new trial();
在
shortcode
函数,数组
$this->entries
正在填充内容
$content
用户已将其包裹在短码夹中。对于短代码的每一个新场合,其内容都会通过php的
array_push
. 然后我可以用这个不断增长的阵列做些什么
$this->entries
(例如,计算其内容,如示例中所示)。
所有这些都很好,而且很有效。
当我需要一个filter函数来使用相同的数组时,问题就出现了。我想在页面底部添加一个所有收集的短代码内容的列表。在代码的顶部,我使用add_filter
其中通过the_content
到调用的其他函数after_content
. 这是可行的,整个页面内容都可以由该函数处理。但是$this->entries
数组为空。在shortcode
函数,但在after_content
之后的功能。
我已尝试设置$this->entries
数组作为全局变量,例如通过添加var $stored_entries
功能外,然后global $stored_entries; $stored_entries = $this->entries
在shortcode函数中,但它没有任何区别。的内容$this->entries
以及$stored_entries
是NULL
.
问题主要是:
- How can I pass the array on to this other function?其次是:
- Why is that array stored between iterations of the shortcode-function but forgotten when we enter the filter-function?