मैं साइट URL को गुप्त स्क्रिप्ट और शैलियों से कैसे हटा सकता हूं?


9

मैं एक SSL समस्या से निपट रहा हूं और मैं सभी स्क्रिप्ट्स और शैलियों से डोमेन को wp_enqueue_scripts द्वारा आउटपुट करना चाहूंगा। इसके परिणामस्वरूप सभी स्क्रिप्ट और शैलियों को डोमेन रूट से संबंधित पथ के साथ प्रदर्शित किया जाएगा।

मुझे लगता है कि एक हुक है जिसका उपयोग मैं इसे करने के लिए कर सकता हूं, हालांकि, मुझे यकीन नहीं है कि कौन सा है, न ही इसके बारे में कैसे जाना है।

जवाबों:


17

व्याक के उत्तर के समान, लेकिन रेगेक्स के बजाय str_replace का उपयोग करना।

script_loader_srcऔर style_loader_srcजो हुक आप चाहते हैं।

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

आप डबल स्लैश //(" नेटवर्क पथ संदर्भ ") के साथ स्क्रिप्ट / शैली URL भी शुरू कर सकते हैं । जो सुरक्षित हो सकता है (?): अभी भी पूर्ण पथ है, लेकिन वर्तमान पृष्ठ की योजना / प्रोटोकॉल का उपयोग करता है।

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

बहुत बढ़िया, बस हुक मैं देख रहा था।
बेन

कोई विशेष कारण जो आप यहां व्यवस्थापक अनुभाग को छोड़कर कर रहे हैं?
एल योबो

@ElYobo शायद इसलिए क्योंकि आप अप्रत्याशित रूप से HTML सामग्री को बदलना नहीं चाहते हैं जिसे आप संपादित करने और सहेजने के बारे में हैं। यह भी ध्यान दें कि आप डेटाबेस में खोजने और बदलने के लिए wp-cli का उपयोग कर सकते हैं जैसे:wp search-replace 'http://mydomain.tld' 'https://mydomain.tld'
surfbuds

@surfbuds मुद्दा सामग्री से संबंधित नहीं है, यह कोड में भरी गई स्क्रिप्ट / शैलियों से संबंधित है। यह उस सामग्री को प्रभावित नहीं करेगा जिसे आप संपादित करने और सहेजने और डेटाबेस में बदलने और बदलने के बारे में हैं, इसी तरह समस्या का समाधान नहीं होगा।
एल योबो

3

हां, मुझे लगता है कि यह संभव है। फ़िल्टर हुक पर देखें script_loader_src; वहाँ स्ट्रिंग मिलता है और आप इसे अपनी आवश्यकताओं के लिए फ़िल्टर कर सकते हैं।

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];
}
  • खरोंच पर लिखें, परीक्षण नहीं

स्टाइलशीट के लिए एक ही संभव है, wp_enqueue_styleफिल्टर के माध्यम से चिकित्सा लोड style_loader_src


3

एक और तरीका है, जो मुझे लगता है कि मुझे मूल विषय से मिला है , शायद थोड़ा यहूदी बस्ती है, लेकिन कुछ स्मार्ट हैंडलिंग हैं जब रिश्तेदार urls का उपयोग करना है (केवल देव स्थल पर परीक्षण किया गया है)। लाभ यह है कि वर्डप्रेस द्वारा उपयोग किए जाने वाले यूआरएल में निर्मित कई अन्य पर एक फिल्टर के रूप में उपयोग किया जा सकता है। यह उदाहरण केवल शैली और स्क्रिप्ट enqueue फ़िल्टर दिखाता है।

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');
 }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.