ทำไม CSS ธีมลูกของฉันถึงเรียกสองครั้ง?


18

ฉันสร้างธีมลูกตามเอกสาร WP และเพิ่มฟังก์ชั่นที่จำเป็น

<?php
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(), array('parent-style')  );
}

ยังไงก็ตามฉันก็จบลงด้วย 2 อ้างอิงถึงสไตล์ของเด็กชุดรูปแบบ:

<link rel='stylesheet' id='twentythirteen-style-css'  href='http://DOMAIN.COM/wp-content/themes/twentythirteen-child/style.css?ver=2013-07-18' type='text/css' media='all' />

<link rel='stylesheet' id='child-style-css'  href='http://DOMAIN.COM/wp-content/themes/twentythirteen-child/style.css?ver=4.0' type='text/css' media='all' />

ทำไมถึงเป็นอย่างนั้น?


คุณสามารถโพสต์ข้อมูลส่วนหัวของไฟล์ style.css ในธีมลูกได้หรือไม่?
cybmeta

คำตอบ:


17

โพสต์นี้เชื่อมโยงจากโพสต์นี้ซึ่งตอนนี้ฉันได้อัปเดตกับการเปลี่ยนแปลงในโพสต์นี้

ขอขอบคุณที่แจ้งปัญหานี้ ฉันทดสอบสถานการณ์อย่างรวดเร็วและสไตล์เด็กถูกโหลดสองครั้งจริง ๆ

เมื่อฉันอัปเดต codex เมื่อไม่นานมานี้ฉันตรวจสอบให้แน่ใจว่าสไตล์ลูกจะถูกโหลดหลังจากสไตล์ผู้ปกครองไม่เคยคำนึงถึงความจริงว่าสิ่งนี้ทำโดยค่าเริ่มต้นจริงและรหัสที่กำหนดจะโหลดสไตล์ชีตลูกสองครั้ง

สิ่งนี้สามารถแก้ไขได้อย่างง่ายดายโดยเพียงแค่ลบออก$priorityจากฟังก์ชั่นและลบส่วนที่เข้าคิวสำหรับชุดรูปแบบเด็ก ฉันได้ลองใหม่ทุกอย่างแล้วและใช้งานได้ มันคงจะดีถ้าคนสองคนสามารถร่วมมือกันได้

ในขณะเดียวกันฉันจะอัพเดทโคเด็กซ์และลิงค์ไปยังโพสต์นี้

นี่คือรหัสการทำงาน

add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style');
function enqueue_parent_theme_style() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
}

แก้ไข

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


1
จะทดสอบ ดูเหมือนเป็นไปได้ว่า WP ไม่สนใจสไตล์ชีทที่จะถูกโหลดสองครั้งหรือมีเหตุผลบางอย่างที่เราขาดหายไป
mmcglynn

ในขณะที่มันอยู่ในหัวข้อที่ผมพบปัญหาคู่ใช้วิธีนี้รายละเอียดที่นี่
dMcClintock

สไตล์ชีทจะไม่ถูกโหลดสองครั้งหากคุณใช้ 'id' เดียวกัน แต่สิ่งนี้สร้างปัญหาอื่น - ฉันต้องการ enequeue สไตล์ชีตของเด็กดังนั้นมันจะโหลดหลังจาก css อื่น ๆ เพื่อให้ฉันสามารถแทนที่มัน ... แต่นี่เป็นการทำซ้ำสไตล์เท่านั้น (หรือไม่สนใจถ้าใช้ 'id' เดียวกัน)
php-b- นักเรียนระดับประถม

1
ปัญหาหลักของวิธีนี้ที่ฉันบอกได้คือสไตล์ลูกไม่ได้ดึงหมายเลขเวอร์ชันของธีมลูก ดูเหมือนว่าจะดึงหมายเลขเวอร์ชันของธีมหลักซึ่งไม่เหมาะเสมอไป
Garconis

@ ปีเตอร์-Goosen ผมทำตามตัวอย่างที่ธีมของเด็กwp_get_theme()->get('Version')ที่ใช้หมายเลขรุ่นของธีมเด็ก: แต่ฉันสิ้นสุดมี CSS ที่ซ้ำกันสำหรับรุ่น WP และรุ่นธีมเด็ก: และ<link rel="stylesheet" id="bushwick-style-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=4.9.8"...> <link rel="stylesheet" id="bushwick-child-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>สิ่งที่จะเป็นทางออกในกรณีเหล่านี้?
IvanRF
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.