WordPress使用dynamic_sidebar函数获取小工具保存到变量
文 / @WordPress主题
在某些需求场景下,我们想要获取小工具保存到变量,而不是直接输出结果。dynamic_sidebar()函数用于输出小工具,但不能只返回结果,并且无法通过hook来解决。
目前我采取的解决办法是将dynamic_sidebar()函数的输出放到缓冲区,代码如下:
if(!function_exists('get_dynamic_sidebar')) { function get_dynamic_sidebar($id) { flush(); ob_start(); dynamic_sidebar('content-center'); $html = ob_get_contents(); ob_end_clean(); return $html; } }
有了这个获取小工具的自定义函数,我们就可以通过hook在文章的第N个段落后插入小工具。
首先注册一个名为content-center的小工具:
function bzg_register_widget() { register_sidebar(array( 'name' => '文章内容中', 'id' => 'content-center', 'description' => '', 'class' => '', 'before_widget' => '<div class="ad content-center">', 'after_widget' => '</div>', 'before_title' => '<h3>', 'after_title' => '</h3>', )); } add_action('widgets_init', 'bzg_register_widget');
过滤the_content,在第二个段落后插入小工具:
function bzg_the_content_ad($content) { if(!is_singular() || !is_main_query()) return $content; $content_center = get_dynamic_sidebar('content-center'); if(!$content_center) return $content; $paragraphs = explode('</p>', $content, 3); if(count($paragraphs) == 3) { $content = $paragraphs[0] . '</p>' . $paragraphs[1] . '</p>' . $content_center . $paragraphs[2]; } return $content; } add_filter('the_content', 'bzg_the_content_ad', 10, 1);

相关文章
-
搭建一个WordPress网站需要多少成本 2023-11-06 00:09:51
-
Symlink介绍(附:如何使用Symlink进行WordPress开发) 2023-11-05 23:38:32
-
让WordPress实现数据库同步的插件:HyperDB 2023-10-24 23:40:49
-
allegro电商平台值得做吗(附:2023年Allegro注册流程指南) 2023-10-08 21:53:39
-
印度跨境电商平台有哪些(附:印度跨境电商做什么产品好) 2023-10-08 21:34:23
-
跨境电商必看的几大海外二手电商平台 2023-10-08 18:04:42
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02