以下是一篇完整的 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(),你可以轻松实现:
-
精准定位显示内容的站点和位置
-
跨站点共享模块并定制差异化参数
-
动态内容插入支持,提升运营效率