ไม่สามารถรับ Child Theme เพื่อโหลด style.css เวอร์ชันล่าสุด


9

ฉันใช้ชุดรูปแบบเด็กอย่างถูกต้อง แต่ฉันไม่สามารถรับการเปลี่ยนแปลงในชุดรูปแบบของเด็กสไตล์เพื่อให้สะท้อนในไซต์ พยายามล้างแคชเบราว์เซอร์หลายล้านครั้งและใช้งานไม่ได้!

ฉันได้สร้างไฟล์เทมเพลตเด็กและไฟล์เหล่านั้นทับไฟล์หลักได้ดี

ฉันได้สังเกตุใน sourse view มันใส่หมายเลขเวอร์ชั่นไว้ที่ส่วนท้ายของ style sheet เช่นนี้: - style.css? ver = 3.9.1 แม้ว่าฉันจะไม่ได้สร้างเวอร์ชั่นขึ้นมาก็ตาม!

ในเว็บไซต์อื่นที่ฉันสร้างขึ้นจะไม่มีการกำหนดสไตล์ชีทดังนั้นทำไมจึงมีการใส่สไตล์โดยอัตโนมัติเมื่อฉันไม่ต้องการตั้งค่า

ฉันจะบังคับให้ใช้ไฟล์ Child style.css เวอร์ชันล่าสุดและไม่ใช่เวอร์ชันได้อย่างไร

นี่คือ URL เว็บไซต์ของฉัน: - http://www.peterswebservices.co.uk/


1
การแคชของเบราว์เซอร์เป็นไปได้ที่ชัดเจนที่สุด แต่การแคชเซิร์ฟเวอร์อาจทำให้เกิดผลเช่นเดียวกันและสามารถ "เร่งความเร็ว" ที่ ISP และเว็บไซต์อิสระบางแห่งเสนอ
s_ha_dum

ส่วนเวอร์ชันที่คุณเห็นเป็นเพียงเวอร์ชัน wordpress ปัจจุบันที่เพิ่มโดยอัตโนมัติโดย wordpress ไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนั้น
Pieter Goosen

คำตอบ:


4

ในยี่สิบสี่ลองวางสิ่งนี้ในธีมลูกของคุณ:

function add_require_scripts_files() {
 wp_enqueue_style('twentyfourteen-style', get_stylesheet_directory_uri().'/style.css', array(), '1.0.0', "all");        
}
add_action( 'wp_enqueue_scripts', 'add_require_scripts_files' );

สิ่งนี้จะแทนที่สไตล์ชีทดั้งเดิม แต่ใช้เวอร์ชันของคุณเอง หากคุณกำลังใช้ธีมหลักที่แตกต่างกันให้ดูที่ฉลาก wp_enqueue_style ดั้งเดิมสำหรับ style.css และทำซ้ำป้ายกำกับนั้นภายในธีมลูกของคุณ คุณจะต้องเปลี่ยน 1.0.0 เป็นหมายเลขอื่นทุกครั้งที่คุณทำการเปลี่ยนแปลง (ดังนั้นจึงเป็นการดีกว่าสำหรับสภาพแวดล้อมการผลิตที่คุณไม่ได้ทำการเปลี่ยนแปลงบ่อย ๆ )

หากต้องการลบเวอร์ชันออกจากสคริปต์และสไตล์ทั้งหมดให้ลองดังนี้:

// remove WP version tag from scripts and styles, best for dev environments
// by Adam Harley https://wordpress.org/support/topic/enqueueregister-script-remove-version
add_filter( 'script_loader_src', 'remove_src_version' );
add_filter( 'style_loader_src', 'remove_src_version' );
function remove_src_version ( $src ) {
  global $wp_version;
  $version_str = '?ver='.$wp_version;
  $version_str_offset = strlen( $src ) - strlen( $version_str );
  if( substr( $src, $version_str_offset ) == $version_str )
    return substr( $src, 0, $version_str_offset );
}

4

การเพิ่มฟังก์ชั่นด้านล่างลงใน 'Functions.php' ของชุดรูปแบบเด็กที่ฉันใช้กับ X ช่วยฉันได้มากในสถานการณ์ที่คล้ายกัน

add_action( 'wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX);
function enqueue_child_theme_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), NULL, filemtime( get_stylesheet_directory() . '/style.css' ) );
}

เพียงแค่ไม่ลืมที่จะเอานี้ก่อนที่จะเปิดตัวเว็บไซต์ของคุณสด

นอกจากนี้โปรดคำนึงถึงคุณสมบัติการแคชของผู้ให้บริการโฮสติ้งของคุณเพื่อสร้างเอฟเฟกต์การอัพเดทนี้

ตามที่ผู้เขียน :

... มันเป็นวิธีที่ดีที่สุดในการรวม childtheme-stylesheet ใน WordPress รวมกับ filemtime () เพื่อบังคับให้เบราว์เซอร์โหลดเวอร์ชันใหม่ของ css-files ฉันไม่ได้ใช้ filemtime () สำหรับสไตล์ผู้ปกครองเนื่องจากฉันไม่เคยสัมผัสเลยดังนั้น filemtime () จะทำให้สิ้นเปลืองทรัพยากรเท่านั้น

ที่มา : ความเห็นโดย Daniel เมื่อวันที่ 22 ตุลาคม 2014ถึงบทความป้องกันการแคช CSS : https://css-tricks.com/snippets/wordpress/prevent-css-caching/#comment-1586141


0

หากไม่ได้เห็นเว็บไซต์เราไม่สามารถช่วยวินิจฉัยปัญหาได้ แต่เหตุการณ์ที่พบบ่อยคือธีมหลัก css มีลำดับความสำคัญสูงกว่า css ย่อยคุณสามารถลบล้างสิ่งนี้ได้โดยใช้!importantแท็กเช่น

#element {
 color:#fff !important;
}

แท็กสำคัญทำเครื่องหมายที่ css เป็นลำดับความสำคัญมากกว่าไฟล์ css อื่น ๆ ที่มีบรรทัดของ css เดียวกัน

แจ้งให้เราทราบ URL และหากสิ่งนี้ช่วยได้


ฉันไม่คิดว่า! สำคัญคือปัญหา แต่นี่คือ URL ของฉัน: - peterswebservices.co.ukนอกจากนี้เมื่อฉันใช้ตรวจสอบใน Google Chrome และเจาะลึกลงไปที่ไฟล์ css มันแสดงรุ่นก่อนหน้าโดยไม่มีการเปลี่ยนแปลงล่าสุด
user1199360

0

ฉันเพิ่งมีปัญหาเดียวกันและกลายเป็นโฮสต์ใหม่ของฉันที่มีการแคชแบบเปิดโดยค่าเริ่มต้น ฉันไปที่แผงควบคุมและล้างแคชจากนั้นจึงให้บริการไฟล์ style.css ที่ถูกต้อง

? ver = 3.9.1 กลายเป็นปลาเฮอริ่งแดง (อย่างน้อยสำหรับฉัน) หลังจากที่ฉันล้างแคชมันยังคงบอกว่า? ver = 3.9.1 ซึ่งไม่พบที่ใดก็ได้ในไฟล์ css ของฉัน แต่มันก็ใช้ได้ดี


1
?ver=3.9.1ถูกเพิ่มโดยอัตโนมัติโดย WordPress นี่เป็นเวิร์ดเพรสเวอร์ชันปัจจุบันและไม่มีส่วนเกี่ยวข้องกับธีมของคุณ :-)
Pieter Goosen

0

ฉันมีปัญหาเดียวกันและฉันแก้ไขด้วยวิธีอื่นที่ไม่ใช่ค่าเริ่มต้น

ก่อนอื่นฉันหาไฟล์ที่ฉันต้องการเปลี่ยน:

wp-includes\theme.php

มีฟังก์ชั่นที่เรียกว่าget_stylesheet_uri

ฟังก์ชั่นของฉันมีลักษณะเช่นนี้:

function get_stylesheet_uri() {
    $time = time();
    $stylesheet_dir_uri = get_stylesheet_directory_uri();
    $stylesheet_uri = $stylesheet_dir_uri . '/style.css?v='.$time;
    /**
     * Filter the URI of the current theme stylesheet.
     *
     * @since 1.5.0
     *
     * @param string $stylesheet_uri     Stylesheet URI for the current theme/child theme.
     * @param string $stylesheet_dir_uri Stylesheet directory URI for the current theme/child theme.
     */
    return apply_filters( 'stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri );
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.