WordPress 多站点开发技巧:在 PHP 中插入 Shortcode,以及仅主站/子站生效的写法
› VFX大学 › wordpress开发 › WordPress 多站点开发技巧:在 PHP 中插入 Shortcode,以及仅主站/子站生效的写法
- This topic has 0 个回复, 1 个参与人, and was last updated 2 小时, 30 分 前 by
追光.

- 作者帖子
- 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(' <script> jQuery( document ).ready( function( $ ) { if ( $( 'body' ).hasClass( 'gp-theme' ) ) { $( "#ghostpool_slider_wrapper_1.flexslider" ).flexslider( { animation: "fade", slideshowSpeed: 5000, animationSpeed: 600, directionNav: false, controlNav: true, pauseOnAction: true, pauseOnHover: false, touch: true, start: function( slider ) { // Pause Slider $( "#ghostpool_slider_wrapper_1 .flex-control-nav li a, #ghostpool_slider_wrapper_1 .video-image" ).click( function() { slider.pause(); } ); } } ); // Resize Video Player $( window ).load( function(){ resizePlayer(); $( window ).resize( function() { resizePlayer(); } ); } ); function resizePlayer() { parentContainer = $( "#ghostpool_slider_wrapper_1 .slides" ).parent().attr( 'id' ); sliderWidth = $( '#' + parentContainer ).width(); newVideoWidth = sliderWidth; newVideoHeight = ( sliderWidth * 63 ) / 915; $( "#ghostpool_slider_wrapper_1.flexslider .slides > li, #ghostpool_slider_wrapper_1.flexslider .video-image, #ghostpool_slider_wrapper_1.flexslider iframe, #ghostpool_slider_wrapper_1.flexslider video, #ghostpool_slider_wrapper_1.flexslider object, #ghostpool_slider_wrapper_1.flexslider embed" ).width( newVideoWidth ).height( newVideoHeight ); } // Show All Video Images & Captions $( "#ghostpool_slider_wrapper_1 .flex-control-nav li a" ).click( function() { $( '#ghostpool_slider_wrapper_1 .video-image' ).show(); $( '#ghostpool_slider_wrapper_1 .video-player' ).hide(); $( '#ghostpool_slider_wrapper_1 .caption' ).show(); } ); } }); </script> '); ?>
✅ 二、仅主站显示内容的写法
多站点中,主站是最初安装的站点,站点 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(' '); // 主站用分类 100 } elseif ($blog_id === 2) { echo do_shortcode(' '); // 子站 2 用分类 200 } else { echo do_shortcode(' '); // 其他站点默认分类 } ?>
📌 六、推荐实践场景
场景
判断逻辑
使用方法
首页显示幻灯片
is_front_page()
搭配 Shortcode 调用
仅主站首页显示
is_main_site() && is_front_page()
精确控制
子站调用不同内容
get_current_blog_id() 分支
动态适配
所有站显示相同内容
无条件输出
无限制共享模块
✅ 总结
WordPress 多站点环境下,良好的结构和判断逻辑可以大大提高代码复用率与可维护性。通过 do_shortcode()配合 is_main_site() 与 get_current_blog_id(),你可以轻松实现:
精准定位显示内容的站点和位置
跨站点共享模块并定制差异化参数
动态内容插入支持,提升运营效率
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。