এনকুইড স্ক্রিপ্ট এবং শৈলীগুলি থেকে কীভাবে আমি সাইটের ইউআরএল অপসারণ করতে পারি?


9

আমি একটি এসএসএল সমস্যা নিয়ে কাজ করছি এবং আমি wp_enqueue_script এর মাধ্যমে আউটপুট হিসাবে সমস্ত স্ক্রিপ্ট এবং শৈলী থেকে ডোমেনটি ছাঁটাই করতে চাই। এর ফলে ডোমেন রুট থেকে আপেক্ষিক পাথের সাথে সমস্ত স্ক্রিপ্ট এবং শৈলী প্রদর্শিত হবে।

আমি কল্পনা করেছিলাম যে এখানে একটি হুক রয়েছে যা আমি এটি ফিল্টার করতে ব্যবহার করতে পারি, তবে আমি নিশ্চিত না যে কোনটি, কীভাবে এটি ব্যবহার করব।

উত্তর:


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

আপনি স্ক্রিপ্ট / স্টাইলের ইউআরএলগুলি ডাবল স্ল্যাশ //(একটি " নেটওয়ার্ক পাথ রেফারেন্স ") দিয়ে শুরু করতে পারেন। যা নিরাপদ হতে পারে (?): এখনও পুরো পথ রয়েছে, তবে বর্তমান পৃষ্ঠার স্কিম / প্রোটোকল ব্যবহার করে।

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

দুর্দান্ত, আমি যে হুকগুলি সন্ধান করছিলাম
বেন

কোনও নির্দিষ্ট কারণ আপনি এখানে প্রশাসক বিভাগ বাদ দিচ্ছেন?
এল ইয়াবো

@ এলয়াবো সম্ভবত আপনি সম্পাদনা এবং সংরক্ষণ করতে যাচ্ছেন এমন এইচটিএমএল সামগ্রীটি অপ্রত্যাশিতভাবে পরিবর্তন করতে চান না বলে সম্ভবত। এছাড়াও নোট করুন যেহেতু আপনি ডাটাবেসে সন্ধান এবং প্রতিস্থাপনের জন্য wp search-replace 'http://mydomain.tld' 'https://mydomain.tld'
ডাব্লুপি

@ সুরফডস ইস্যুটি সামগ্রীর সাথে সম্পর্কিত নয়, এটি কোডে থাকা স্ক্রিপ্টগুলি / স্টাইলগুলির সাথে সম্পর্কিত। এটি আপনি যে সামগ্রীতে সম্পাদনা করতে এবং সংরক্ষণ করতে চলেছেন এবং কোনও অনুসন্ধান এবং ডেটাবেস-এ প্রতিস্থাপন করতে চলেছেন তেমন প্রভাব ফেলবে না তেমনি সমস্যার সমাধান হবে না।
এল ইয়োবো

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

আর একটি উপায়, যা আমি মনে করি যে আমি মূল থিমটি থেকে পেয়েছি , সম্ভবত কিছুটা ঘেটো কিন্তু আপেক্ষিক ইউআরএলগুলি কখন ব্যবহার করতে হবে তা সম্পর্কে কিছু স্মার্ট হ্যান্ডলিং রয়েছে (কেবলমাত্র ডেভ সাইটটিতে পরীক্ষিত)। সুবিধাটি হ'ল এটি ওয়ার্ডপ্রেস ব্যবহার করে এমন অনেকগুলি বিল্ট ইউআলিতে ফিল্টার হিসাবে ব্যবহার করা যেতে পারে। এই উদাহরণটি কেবল স্টাইল এবং স্ক্রিপ্ট এনকুই ফিল্টার দেখায়।

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');
 }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.