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

VFX大学 wordpress开发 WordPress 多站点开发技巧:在 PHP 中插入 Shortcode,以及仅主站/子站生效的写法

标签: ,

正在查看 0 条回复
  • 作者
    帖子
    • #596

      追光
      管理员

      以下是一篇完整的 WordPress 多站点开发实用技巧文章,重点讲解:

      1. 如何在 PHP 中调用短代码(Shortcode)

      2. 如何设置“仅主站显示”或“仅子站显示”的逻辑

      3. 可扩展场景建议


      💡 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(),你可以轻松实现:

      • 精准定位显示内容的站点和位置

      • 跨站点共享模块并定制差异化参数

      • 动态内容插入支持,提升运营效率

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。