ใช้ wp_add_inline_style โดยไม่มีสไตล์ชีต


18

ฉันต้องการเพิ่มสไตล์อินไลน์แบบกำหนดเองในส่วนหัวของธีมที่กำหนดเองที่ฉันสร้าง ฉันได้พบกับwp_add_inline_style()ฟังก์ชั่นที่ใช้งานได้ แต่ไม่เหมาะกับฉันจริงๆเพราะมันขึ้นอยู่กับสไตล์ชีทเฉพาะ ฉันต้องการเพิ่มสไตล์อินไลน์ที่ส่วนท้ายของแท็กส่วนหัวโดยไม่ต้องพึ่งพาสไตล์ชีท

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

แน่นอนฉันสามารถเพิ่มพวกเขาโดยตรงในไฟล์ header.php แต่ฉันต้องการหลีกเลี่ยงปัญหานี้

คำตอบ:


24

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

add_action('wp_head', 'my_custom_styles', 100);

function my_custom_styles()
{
 echo "<style>*{color: red}</style>";
}

ตรวจสอบWP codexเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ action hooks


ไม่มีปัญหา! ดีใจที่ฉันสามารถช่วย
SkyShab

หาก (เช่นฉัน) คุณต้องการเพิ่ม CSS แบบอินไลน์ที่กำหนดเองไปยังหน้าแดชบอร์ดคุณสามารถใช้การadmin_headกระทำได้
Guy บราซิลนั่น

16

คุณสามารถใช้จุดจับ "จำลอง":

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );

wp_add_inline_style( 'dummy-handle', '* { color: red; }' );

ฉันชอบโซลูชันนี้มากเพราะสไตล์ของฉันมีจุดจับและจัดคิวราวกับว่ามันรวมอยู่ในไฟล์. css
dev_masta

ใช้เท็จเป็นแหล่งที่มาของ wp_register_style ยังไม่ได้รับอนุญาตต่อเอกสารที่codex.wordpress.org/Function_Reference/...
16patsle

3

ธีมของคุณมีสไตล์ชีทเริ่มต้นแน่นอน (ไม่เช่นนั้นจะไม่โหลดเป็นธีม) เพียงใช้สไตล์ชีทนี้เป็นตัวจัดการสำหรับ CSS แบบอินไลน์ของคุณ ตัวอย่างสามารถพบได้ในฟังก์ชั่น. php ของชุดรูปแบบ TwentyFifteen (รหัสข้ามสำหรับช่วงสั้น ๆ ):

function twentyfifteen_scripts() {
    wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );

}
function twentyfifteen_post_nav_background() {
    wp_add_inline_style( 'twentyfifteen-style', $css );
}

1
OP ขอเฉพาะวิธีการอื่นที่ไม่ใช่การใช้ wp_add_inline_style () ทั้งสองวิธีใช้งานได้และฉันไม่พบเหตุผลที่น่าสนใจในการใช้ wp_add_inline_style () ถ้าคุณรู้เหตุผลฉันก็อยากจะรู้
SkyShab

โซลูชันของคุณใช้งานได้ แต่ก็ยัง "แฮ็ก" ตามสิ่งที่ฉันได้ยินจากคนในทีม WP หนึ่งครั้ง (ถ้าฉันไม่เข้าใจผิด); ไม่ว่าฉันมีความคิดเห็น ฉันคิดว่า OP กำลังคิดว่าจะไม่มีวิธีทำเช่นนี้หากไม่โหลดสไตล์ชีตสองครั้งหรือใช้ตะขอผี อย่างไรก็ตามถ้าพวกเขาไม่ได้เขียนปลั๊กอินมันจะมีสไตล์ชีทของธีมอยู่เสมอ ฉันกำลังแก้ไขคำตอบของฉันเนื่องจากโซลูชันของคุณได้รับการบันทึกไว้ใน Codex แล้ว :)
แคสเปอร์

ฉันเล่นกับ wp_add_inline_style () และนี่คือสิ่งที่ฉันพบ ประโยชน์ของการแนบสไตล์กับสไตล์ชีทคือถ้ามันถูกตัดออกสไตล์จะไม่ถูกพิมพ์ออกมา แต่วิธีการทั้งสองจะพิมพ์แบบอินไลน์ในหัว สมมติว่าคุณเป็นนักพัฒนาปลั๊กอินและสไตล์ของคุณจะพิมพ์ออกมาในหัว สิ่งนี้ไม่เกี่ยวกับสไตล์ของธีมดังนั้นหากธีมลูก dequeued ธีมของธีมหลักเพื่อใช้เป็นของตัวเองตอนนี้สไตล์ปลั๊กอินของคุณจะไม่ถูกส่งออก ดังนั้น OP อาจระบุส่วนหนึ่งของคำขอด้วยเหตุผลนี้
SkyShab
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.