WordPress 多站点开发技巧:在 PHP 中插入 Shortcode,以及仅主站/子站生效的写法
› 社区话题 › wordpress开发 › WordPress 多站点开发技巧:在 PHP 中插入 Shortcode,以及仅主站/子站生效的写法

- 作者帖子
- 2025年7月14日 - 下午1:10 #596
追光管理员以下是一篇完整的 WordPress 多站点开发实用技巧文章,重点讲解:
如何在 PHP 中调用短代码(Shortcode)
如何设置“仅主站显示”或“仅子站显示”的逻辑
可扩展场景建议
? WordPress 多站点开发技巧:在 PHP 中插入 Shortcode,以及仅主站/子站生效的写法
WordPress 多站点(Multisite)架构下,许多功能需要根据不同子站点、主站点的差异进行定制。例如插入幻灯片、广告模块、文章推荐等,是否显示或调用何种内容,常常依赖于当前站点环境。
本篇将系统性分享如何在 PHP 模板中调用 Shortcode,并实现「仅主站可见」、「仅子站可见」、「全站可见」的控制逻辑。
✅ 一、在 PHP 中插入 Shortcode 的标准方式
在模板或函数文件中,我们可以通过 do_shortcode() 来调用任意 WordPress 短代码。
? 基本语法:
echo do_shortcode('[shortcode 参数="值"]');
? 示例:插入幻灯片
<?php echo do_shortcode('[slider content="slide" cats="712" width="915" height="63" timeout="5"]'); ?>
✅ 二、仅主站显示内容的写法
多站点中,主站是最初安装的站点,站点 ID 为 1,你可以用以下方式进行判断。
? 方法 1:使用
is_main_site()
<?php if ( is_main_site() ) : ?> <div class="only-main-site"> <?php echo do_shortcode('[your_shortcode]'); ?> </div> <?php endif; ?>
? 方法 2:判断站点 ID(更明确)
<?php if ( get_current_blog_id() === 1 ) : ?> <?php echo do_shortcode('[your_shortcode]'); ?> <?php endif; ?>
✅ 三、仅子站显示内容的写法
若你希望排除主站,仅在子站点中显示:
? 方法 1:
! is_main_site()
<?php if ( ! is_main_site() ) : ?> <div class="only-subsite"> <?php echo do_shortcode('[your_shortcode]'); ?> </div> <?php endif; ?>
? 方法 2:站点 ID > 1
<?php if ( get_current_blog_id() > 1 ) : ?> <?php echo do_shortcode('[your_shortcode]'); ?> <?php endif; ?>
✅ 四、所有站点都显示内容(无任何限制)
如果你希望所有站点(主站 + 子站)都显示该内容,只需直接调用:
<div class="global-shortcode"> <?php echo do_shortcode('[your_shortcode]'); ?> </div>
✅ 五、附加技巧:根据站点 ID 显示不同内容
你可以对不同子站调用不同参数,例如根据站点 ID 使用不同分类 ID:
<?php $blog_id = get_current_blog_id(); if ($blog_id === 1) { echo do_shortcode('[slider cats="100"]'); // 主站用分类 100 } elseif ($blog_id === 2) { echo do_shortcode('[slider cats="200"]'); // 子站 2 用分类 200 } else { echo do_shortcode('[slider cats="300"]'); // 其他站点默认分类 } ?>
? 六、推荐实践场景
场景
判断逻辑
使用方法
首页显示幻灯片
is_front_page()
搭配 Shortcode 调用
仅主站首页显示
is_main_site() && is_front_page()
精确控制
子站调用不同内容
get_current_blog_id() 分支
动态适配
所有站显示相同内容
无条件输出
无限制共享模块
✅ 总结
WordPress 多站点环境下,良好的结构和判断逻辑可以大大提高代码复用率与可维护性。通过 do_shortcode()配合 is_main_site() 与 get_current_blog_id(),你可以轻松实现:
精准定位显示内容的站点和位置
跨站点共享模块并定制差异化参数
动态内容插入支持,提升运营效率
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。