Site URL'sini sıralı komut dosyalarından ve stillerden nasıl kaldırabilirim?


9

Bir SSL sorunu ile uğraşıyorum ve wp_enqueue_scripts üzerinden çıktı olmak tüm komut dosyaları ve stilleri alandan şerit istiyorum. Bu, tüm komut dosyalarının ve stillerin etki alanı kökünden göreli bir yolla görüntülenmesine neden olur.

Bunu dosyalamak için kullanabileceğim bir kanca olduğunu hayal ediyorum, ancak hangisinden ne de nasıl geçeceğinden emin değilim.

Yanıtlar:


17

Wyck'ın cevabına benzer, ancak normal ifade yerine str_replace kullanılıyor.

script_loader_srcve style_loader_srcistediğiniz kancalardır.

<?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 );
}

Komut dosyası / stil URL'lerini çift eğik çizgi //(" ağ yolu başvurusu ") ile de başlatabilirsiniz . Hangisi daha güvenli olabilir (?): Hala tam yolu vardır, ancak geçerli sayfanın şemasını / protokolünü kullanır.

<?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 );
}

Mükemmel, sadece aradığım kancalar.
Ben

Yönetici bölümünü hariç tutmanızın özel bir nedeni var mı?
El Yobo

@ElYobo Muhtemelen düzenlemek ve kaydetmek üzere olduğunuz HTML içeriğini beklenmedik bir şekilde değiştirmek istemediğiniz için. Ayrıca, wp- wp search-replace 'http://mydomain.tld' 'https://mydomain.tld'
cli'yu

@surfbuds Sorun içerikle ilgili değil, kodda yüklü olan komut dosyalarıyla / stillerle ilgili. Düzenlemek ve kaydetmek üzere olduğunuz içeriği etkilemez ve veritabanında bir arama ve değiştirme yapmak da sorunu çözmez.
El Yobo

3

Evet, bence bu mümkün. Filtre kancasına bakınız script_loader_src; orada dize olsun ve bunu gereksinimleriniz için filtreleyebilirsiniz.

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];
}
  • sıfırdan yaz, test edilmedi

Aynısı stil sayfaları için de mümkündür, wp_enqueue_stylefiltre ile yüklenir style_loader_src.


3

Kök temasından aldığımı düşündüğüm başka bir yol, belki biraz getto ama göreceli url'lerin ne zaman kullanılacağına dair bazı akıllı işlemlere sahip (sadece dev sitesinde test edildi). Avantajı, WordPress'in kullandığı diğer birçok yerleşik URL'de bir filtre olarak kullanılabilmesidir. Bu örnekte yalnızca stil ve kod enqueue filtresi gösterilmektedir.

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');
 }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.