4
回答
wordpress中,'??'会变成'?',是什么原因?该怎么解决?
华为云实践训练营,热门技术免费实践!>>>   
环境:PHP 5.3,Tengine 1.5.2,wordpress 3.8
目的:用Tengine中的nginx_concat_module来合并调用css
用法:"http://example.com/??style1.css,style2.css,css/style3.css "
通过' ?? '来合并多个css

  1. define ( 'TEST_URL', 'http://example.com/??style1.css,style2.css,css/style3.css' ); 
  2. wp_enqueue_style('test', TEST_URL);

不知道为什么,在wp_enqueue_style()中,'??'被处理成'?',2个问号变成了1个,调用css的地址变成了"http://example.com/?style1.css,style2.css,css/style3.css ",合并自然失败了。

试了下不使用wp_enqueue_style,直接
  1. <script src="http://example.com/??style1.css,style2.css,css/style3.css"></script>

这样子却合并成功。


基础太差,看wordpress官方文档中有关wp_enqueue_style()和wp_style的内容看不明白,找不到答案。

想知道为什么,怎样子可以解决上述问题,谢谢。
举报
lotcloud
发帖于4年前 4回/285阅
共有4个答案 最后回答: 4年前

你可以直接找到这个函数,修改她的过滤函数看看。

或者你改成 ??? 3个问号?看看会被过滤成什么样。

--- 共有 2 条评论 ---
lotcloud我之前也猜测是不是被wp的某个系统函数功能给过滤了,但找不到,所以来求帮助的 4年前 回复
lotcloud我试过了,不管几个“?”,都变成一个了 4年前 回复

看了下wp_enqueue_style的内容

function wp_enqueue_style( $handle, $src = false, $deps = array(), $ver = false, $media = 'all' ) {

      global $wp_styles;
      if ( ! is_a( $wp_styles, 'WP_Styles' ) ) {
        if ( ! did_action( 'init' ) )
            _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
       '<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
       $wp_styles = new WP_Styles();
    }

    if ( $src ) {
      $_handle = explode('?', $handle);//应该是这里的原因吧,用‘?’作为分隔符,这样子的话,该怎么解决呢
      $wp_styles->add( $_handle[0], $src, $deps, $ver, $media );
    }
       $wp_styles->enqueue( $handle );
    }
顶部