Làm cách nào tôi có thể xóa URL trang web khỏi các tập lệnh và kiểu được liệt kê?


9

Tôi đang xử lý một vấn đề SSL và tôi muốn loại bỏ tên miền khỏi tất cả các tập lệnh và kiểu được xuất qua wp_enqueue_scripts. Điều này sẽ dẫn đến tất cả các tập lệnh và kiểu được hiển thị với một đường dẫn tương đối từ gốc tên miền.

Tôi tưởng tượng có một cái móc mà tôi có thể sử dụng để quay phim này, tuy nhiên, tôi không chắc chắn cái nào, cũng như làm thế nào để đi về nó.

Câu trả lời:


17

Tương tự như câu trả lời của Wyck, nhưng sử dụng str numplace thay vì regex.

script_loader_srcstyle_loader_srclà những cái móc bạn muốn.

<?php
add_filter( 'script_loader_src', 'wpse47206_src' );
add_filter( 'style_loader_src', 'wpse47206_src' );
function wpse47206_src( $url )
{
    if( is_admin() ) return $url;
    return str_replace( site_url(), '', $url );
}

Bạn cũng có thể bắt đầu URL tập lệnh / kiểu bằng dấu gạch chéo kép //(" tham chiếu đường dẫn mạng "). Cái nào có thể an toàn hơn (?): Vẫn có đường dẫn đầy đủ, nhưng sử dụng lược đồ / giao thức của trang hiện tại.

<?php
add_filter( 'script_loader_src', 'wpse47206_src' );
add_filter( 'style_loader_src', 'wpse47206_src' );
function wpse47206_src( $url )
{
    if( is_admin() ) return $url;
    // why pass by reference on count? last arg
    return str_replace( array( 'http:', 'https:' ), '', $url, $c=1 );
}

Tuyệt vời, chỉ là những cái móc tôi đang tìm kiếm.
Ben

Bất kỳ lý do cụ thể mà bạn đang loại trừ phần quản trị ở đây?
El Yobo

@ElYobo Có lẽ vì bạn không muốn thay đổi bất ngờ nội dung HTML mà bạn sắp chỉnh sửa và lưu. Cũng lưu ý rằng bạn có thể sử dụng wp-cli để tìm và thay thế trong cơ sở dữ liệu như trong:wp search-replace 'http://mydomain.tld' 'https://mydomain.tld'
Surfbud

@surfbud Vấn đề không liên quan đến nội dung, nó liên quan đến các tập lệnh / kiểu được tải trong mã. Nó sẽ không ảnh hưởng đến nội dung mà bạn sắp chỉnh sửa và lưu và thực hiện tìm kiếm và thay thế trong cơ sở dữ liệu cũng sẽ không giải quyết được vấn đề.
El Yobo

3

Vâng, tôi nghĩ rằng nó có thể. Xem trên móc lọc script_loader_src; có được chuỗi và bạn có thể lọc này cho các yêu cầu của bạn.

add_filter( 'script_loader_src', 'fb_filter_script_loader', 1 );
function fb_filter_script_loader( $src ) {

    // remove string-part "?ver="
    $src = explode( '?ver=', $src );

    return $src[0];
}
  • viết trên đầu, không được kiểm tra

Điều tương tự cũng có thể xảy ra đối với các bảng định kiểu, có tải thông qua wp_enqueue_stylebộ lọc style_loader_src.


3

Một cách khác, mà tôi nghĩ rằng tôi đã nhận được từ chủ đề gốc , có thể là một chút ghetto nhưng có một số xử lý thông minh khi nào nên sử dụng các url tương đối (chỉ được thử nghiệm trên trang dev). Lợi ích là nó có thể được sử dụng như một bộ lọc trên nhiều url được tích hợp sẵn khác mà WordPress sử dụng. Ví dụ này chỉ hiển thị bộ lọc enqueue kiểu và kịch bản.

function roots_root_relative_url($input) {
  $output = preg_replace_callback(
    '!(https?://[^/|"]+)([^"]+)?!',
    create_function(
      '$matches',
      // if full URL is site_url, return a slash for relative root
      'if (isset($matches[0]) && $matches[0] === site_url()) { return "/";' .
      // if domain is equal to site_url, then make URL relative
      '} elseif (isset($matches[0]) && strpos($matches[0], site_url()) !== false) { return $matches[2];' .
      // if domain is not equal to site_url, do not make external link relative
      '} else { return $matches[0]; };'
    ),
    $input
  );

  /**
   * Fixes an issue when the following is the case:
   * site_url() = http://yoursite.com/inc
   * home_url() = http://yoursite.com
   * WP_CONTENT_DIR = http://yoursite.com/content
   * http://codex.wordpress.org/Editing_wp-config.php#Moving_wp-content
   */
  $str = "/" . end(explode("/", content_url()));
  if (strpos($output, $str) !== false) {
    $arrResults = explode( $str, $output );
    $output = $str . $arrResults[1];
  }

  return $output;

if (!is_admin()) {
  add_filter('script_loader_src', 'roots_root_relative_url');
  add_filter('style_loader_src', 'roots_root_relative_url');
 }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.