มีไฟล์ functions.php ระดับโลกใดบ้างที่ใช้งานได้กับธีมใด ๆ


11

มีไฟล์ functions.php ระดับโลกบางประเภทที่ใช้กับธีมใด ๆ ได้หรือไม่

ปัญหาอยู่ที่นี่:

เมื่อฉันเปลี่ยนไฟล์ functions.php ในธีมใด ๆ ฉันต้องดูแลการเปลี่ยนแปลงสองอย่าง: อันดับแรกฉันต้องดูแลการอัพเดตของธีมนั้น ประการที่สองฉันต้องดูแลการเปลี่ยนธีมของเว็บไซต์

ดังนั้นแทนที่จะทำการเปลี่ยนแปลงในฟังก์ชั่น. php ของธีมมันเป็นไปได้ไหมที่จะทำการเปลี่ยนแปลงในไฟล์บางฟังก์ชั่น. php ที่เป็นอิสระจากธีมใด ๆ ?


4
เงินรางวัลนั้นจำเป็นจริงๆหรือ? คำถามมีคำตอบที่ดีอยู่แล้ว
onetrickpony

@Mohit Bumb เป็นคนที่ให้ a) ความโปรดปรานและ b) เป็นคนแรกที่แนะนำให้ใช้ปลั๊กอินฉันจะบอกว่าเขาควรจะเป็นคนที่ได้รับคะแนนตัวแทน (ด้านหลัง) IMO รางวัลก็ไม่จำเป็น (และผมคิดว่าเขาไม่ทราบว่าเขาจะจริงให้มันออกไป )
ไกเซอร์

คำตอบ:


15

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

มีหลายแห่งที่โค้ดโหลดจากซึ่งไม่ได้เป็นส่วนหนึ่งของคอร์ WordPress:

  • wp-config.php ไฟล์การกำหนดค่า
  • ธีมที่ใช้งาน (และพาเรนต์สำหรับธีมลูก)
  • ปลั๊กอินที่ใช้งาน
  • ต้องใช้ปลั๊กอิน
  • ดร็อปอิน (สิ่งเหล่านี้ค่อนข้างสูงและให้บริการตามวัตถุประสงค์ที่เฉพาะเจาะจงมาก)

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


+1 ให้กับคุณและ @kaiser ฉันเชื่อว่าคำตอบที่ถูกต้องคือ 1) สร้าง Child Theme เพื่อบ้านฟังก์ชั่นที่กำหนดเองในfunctions.phpหรือ 2) สร้างปลั๊กอินที่กำหนดเองเพื่อบ้านฟังก์ชั่นนั้นเพื่อให้เป็นแบบพกพาในธีมต่างๆ
Chip Bennett

@Chip เนื่องจากคำถามถามเกี่ยวกับการรักษารหัสเมื่อเปลี่ยนชุดรูปแบบฉันไม่เห็นชุดรูปแบบของเด็กเหมาะสม ถ้าคุณต้องการเปลี่ยนเป็นธีมที่เป็นธีมลูก ปลั๊กอินเหมาะสมที่สุดสำหรับข้อกำหนดที่กำหนด
Rarst

นั่นเป็นเหตุผลที่ฉันโหวตให้คุณทั้งคู่ :) แต่คุณยังสามารถใช้ Child Theme ได้เมื่อเปลี่ยนธีม เพียงแค่เปลี่ยนแท็กที่เหมาะสมในรูปแบบของเด็กTemplate: style.css
Chip Bennett

@ เรือคุณไม่ได้รับคะแนนของฉัน ถ้าฉันต้องการใช้ธีมลูก ฉันสร้างธีมลูกสำหรับ Twenty Eleven ด้วยรหัสของฉัน จากนั้นฉันต้องการเปลี่ยนไปใช้ธีมที่เป็นธีมลูกของ Twenty Eleven (หรือผู้ปกครองอื่น ๆ ) ฉันไม่มีเส้นทางนอกจากการผสานธีมลูกสองชุดด้วยตนเอง จากนั้นเมื่อยกเลิกการรวมในครั้งต่อไปฉันจะเปลี่ยนชุดรูปแบบ มันเป็นระเบียบ
Rarst

ฉันใช้ต้องใช้สำหรับสิ่งนี้ ฉันคิดว่ามันเป็นวิธีที่รวดเร็วและตรงไปตรงมาในการเพิ่มฟังก์ชั่น hooks และ shortcodes สำหรับการใช้งานข้ามธีม
chiliNUT

6

นั่นเป็นปัญหาที่แท้จริงและผู้คนจำนวนมากเผชิญเมื่อพวกเขาเปลี่ยนธีม แต่มีวิธีแก้ปัญหาง่ายๆ

เพิ่มฟังก์ชั่นนั้นในหน้าใหม่ที่ไม่ได้ใช้ function.php และตั้งชื่อที่ไม่ซ้ำกันเช่น yousitename + timestamp หรืออะไรก็ตามที่คุณต้องการ แต่สร้างโฟลเดอร์ที่มีชื่อเดียวกันที่ไม่ซ้ำกันและซิปมันเป็นปลั๊กอินดังนั้นมันจะทำงานได้อย่างแน่นอน .

เพื่อทำความเข้าใจว่าปลั๊กอินตัวใดที่ไม่ควรให้ชื่อกับปลั๊กอินนั้น:

/*
Plugin Name: XYZ
*/

3

ในฐานะที่เป็นนอกเหนือไปจาก @MBTheDeveloper คำตอบ

ตัวเลือกอื่น ๆ จะเป็น:

  1. สร้างธีมลูกสำหรับธีมปัจจุบันของคุณและใช้ไฟล์ functions.php จากธีมนี้ (นี่คือ "แนวปฏิบัติที่ดีที่สุด")
  2. ใช้includeในไฟล์ธีมของคุณทำงานฟังก์ชั่นและโหลดไฟล์ custom-function.php ที่มีรหัสที่กำหนดเองของคุณ

2

อย่าทำการเปลี่ยนแปลงเฉพาะเว็บไซต์ของคุณในไฟล์ functions.php ของธีม

สร้างปลั๊กอินเฉพาะไซต์แทน ฉันชอบใช้ชื่อโดเมนของเว็บไซต์เช่น "ottopress.com" จากนั้นวางตัวอย่างข้อมูลของคุณลงในปลั๊กอินนั้นและปล่อยให้ทำงานบนไซต์นั้นเท่านั้น

อีกทางหนึ่งเมื่อคุณมีตัวอย่างของการเปลี่ยนแปลงที่เกี่ยวข้องสร้างปลั๊กอินเฉพาะสำหรับพวกเขา ที่ให้คุณเลือกเปิด / ปิดบิตของรหัสที่เกี่ยวข้องตามต้องการ


2

คำอธิบายบางอย่าง

ก่อนอื่นคุณต้องเข้าใจวัตถุประสงค์ของ functions.php ในชุดรูปแบบ Function.php นั้นเป็นเพียงแค่ไฟล์ปลั๊กอินที่ไม่มีชื่อใด ๆ หาก Wordpress ถูกโหลดโดยอัตโนมัติ Wordpress โหลด function.php ของชุดรูปแบบปัจจุบันของคุณสำหรับ wordpress front-end pages และหน้า back-end (admin)

ไม่มีความแตกต่างระหว่างปลั๊กอินและ functions.php ยกเว้นว่าปลั๊กอินมีชื่อและสามารถเปิดใช้งาน / ยกเลิกการเปิดใช้งานโดยไม่คำนึงถึงปลั๊กอินและธีมอื่น ๆ funtions.php แนบมากับชุดรูปแบบปัจจุบันของคุณและหากคุณเปลี่ยนไปใช้ชุดรูปแบบอื่น Wordpress จะใช้ function.php ของชุดรูปแบบใหม่และไม่ใช่ function.php เดิมของคุณด้วยการปรับเปลี่ยนแบบกำหนดเอง

การอัปเดตชุดรูปแบบยังเขียนทับ function.php และไม่มีทางหลีกเลี่ยงได้แม้ว่าคุณจะใส่ modifictions ที่กำหนดเองของคุณในไฟล์รหัสแยกต่างหากและรวมไว้ใน fucntions.php ของคุณคุณจะต้องเพิ่มบรรทัดนั้นหลังจากการอัพเดททุกครั้ง

โดยทั่วไปแล้วประเภทของรหัสที่ควรจะอยู่ใน functions.php:

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

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

การแก้ไขปัญหา

ทางออกเดียวที่แนะนำโดย @Otto คือการสร้างไฟล์ปลั๊กอิน วิธีที่คุณสามารถใช้เพื่อสร้างปลั๊กอินเฉพาะไซต์ของคุณคือการสร้างโฟลเดอร์ที่มีชื่อไซต์ของคุณใน 'wp-content / plugins' และสร้างไฟล์ปลั๊กอินในนั้น

ทำไมต้องเป็นไฟล์ปลั๊กอิน? และไม่ใช่ไฟล์ปลั๊กอินเดี่ยว

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.