在执行短码时包含Bootstrap的正确方式是什么

时间:2015-09-14 作者:Nour Eldin Mohamed

我试图仅在执行短代码函数时才包含引导。它会被包括在内,但会影响主题的其他标记。

我能绕过这个问题的唯一方法是在插件的主文件中全局包含引导。它在前端工作,使短代码通过引导类执行和显示输出,并且所有其他页面内容都不受引导的影响。

但这样一来,这些都包含在所有地方,这会影响后端样式。

这个问题与前端和后端都有关。如果一个修好了,另一个就坏了。

2 个回复
SO网友:Rarst

我还发现全局排队或从短代码内部排队的典型做法存在问题。

在我的站点上实现代码高亮显示时,我也遇到了类似的挑战——我只想在必要时加载脚本和样式。我最后检查了<pre> 标记为要输出的条件:

{% if \'<pre>\' in get_the_content() %}
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/solarized_dark.min.css">
    <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/highlight.min.js"></script>
    {% if has_term( \'twig\', \'post_tag\' ) %}
    <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/languages/twig.min.js"></script>
    {% endif %}
    <script type="text/javascript">
        jQuery(document).ready(function ($) {
            $(\'pre\').each(function (i, e) {
                hljs.highlightBlock(e)
            });
        });
    </script>
{% endif %}
这是在Twig模板中(不使用WP队列),但您也可以在PHP中使用相同的方法。

SO网友:dev

首先在短代码回调函数外部注册样式表,然后在短代码回调函数中将其排队。例如:-

    function wpsoe_191512_avatar_shortcode_wp_enqueue_scripts() {
  wp_register_style( \'get-avatar-style\', plugins_url( \'/css/style.css\' , __FILE__ ), array(), \'1.0.0\', all );
  }


  add_action( \'wp_enqueue_scripts\', \'brw_avatar_shortcode_wp_enqueue_scripts\' );

  if ( function_exists( \'get_avatar\' ) ) {

  function wpse_165754_user_avatar_shortcode ( $attributes ) {
            global $current_user;
            get_currentuserinfo();
            extract(shortcode_atts(array(
             "id" => $current_user->ID,
             "size" => 32,
             "default" => \'mystery\',
             "alt" => \'\',
             "class" => \'\',
      ), 
      $attributes, \'get_avatar\' ));
      $get_avatar= get_avatar( $id, $size, $default, $alt );

      wp_enqueue_style( \'get-avatar-style\' );

      return \'<span class="get_avatar \'.$class.\'">\'.$get_avatar.\'</span>\';
      }
      add_shortcode (\'get_avatar\', \'wpse_165754_user_avatar_shortcode\');
      }
以上就是一个例子。你可以用你的。谢谢

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗