您可以使用一些位置良好的操作来查找您的短代码,如果发现了,请设置一个标志并运行其他操作,首先剥离该短代码的内容,然后再运行一个辅助操作来执行侧栏中的该短代码。除此之外,您还可以在侧边栏文件中创建自己的简单操作,并在需要打印快捷代码时将其挂接。
没有跟踪?不要怪你,我并不总是善于解释想法,所以这里有一个代码形式的示例。。
首先,在想要显示快捷代码内容的侧栏中,添加类似。。
<?php do_action( \'special_shortcode_content\' ); ?>
现在我们有了一个可以在设置标志时挂钩的操作。
接下来,我们需要扫描帖子,在循环发生之前,检查是否存在特定的短代码,我将使用[sc]
根据您的示例,我们可以通过the_posts
. 我宁愿将代码封装到一个类中,并在类中定义一个类变量作为标志,而不是使用全局变量。
class Page_Shortcode_to_Sidebar {
private $has_shortcode = false;
public function __construct() {
if( is_admin() )
return;
add_action( \'the_posts\', array( $this, \'check_for_shortcode\' ) );
add_filter( \'the_content\', array( $this, \'remove_shortcode\' ), 1 );
}
public function check_for_shortcode( $posts ) {
if( empty( $posts ) )
return $posts;
if( !is_page() )
return $posts;
foreach( $posts as $post ) {
if( !stripos( $post->post_content, \'[sc]\' ) )
continue;
$this->has_shortcode = true;
}
return $posts;
}
public function remove_shortcode( $content ) {
if( !$this->has_shortcode )
return $content;
$content = str_replace( \'[sc]\', \'\', $content );
add_action( \'special_shortcode_content\', array( $this, \'do_shortcode\' ) );
return $content;
}
public function do_shortcode() {
?>
<li><?php do_shortcode(\'[sc]\'); ?></li>
<?php
}
}
$Page_Shortcode_to_Sidebar = new Page_Shortcode_to_Sidebar;
所以基本上是这样的。。
上的回调the_posts
检查每个帖子的短代码,如果找到,则设置标志上的回调the_content
稍后执行,并检查是否设置了标志如果设置了标志,则从内容中删除短代码,并在自定义侧栏操作中添加操作它返回内容,减去特定的短代码侧栏动作发生,并生成短代码内容如果您指的是您自己创建的短代码,并且它是以这种方式使用的。。
[sc]something[/sc]
。。然后,您将需要更智能的工具来从帖子内容中删除短代码内容。
如果不是这样使用的,那么我上面提供的应该可以很好地完成这项工作。
希望有帮助:)