การแก้ไขไฟล์หลักของ WordPress


21

ทำไม?

บางครั้งการแก้ไขที่ง่ายในการแก้ไขพฤติกรรมของ WordPress เองหรือปลั๊กอินอาจเป็นการเปลี่ยนแปลงไฟล์ของปลั๊กอินหรือ WordPress โดยตรง เมื่อคิดไอเดียดังกล่าวออกมาการตอบสนองตามปกติคือ:

อย่าแฮ็คคอร์

เหตุใดจึงเป็นความคิดที่ดีที่จะเปลี่ยนไฟล์คอร์?

พิจารณา?

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

อย่างไร?

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


1
ฉันไม่เห็นด้วยอย่างยิ่งกับคำแนะนำในการแฮ็คคอร์เนื่องจากฉันยังไม่พบสิ่งใดที่ฉันไม่สามารถแก้ไขได้ คนเดียวที่มีแฮ็คหลักทางธุรกิจสำหรับไซต์การผลิตคือผู้ที่ไม่จำเป็นต้องอ่านอะไรเลยในหัวข้อนี้เนื่องจากพวกเขาอาจอยู่ในทีมหลักของ WordPress อยู่แล้ว การอธิบายให้ผู้คนรู้ว่าจะทำอย่างไรให้ 99 จาก 100 คนที่ไม่ควรทำอย่างแน่นอนเพื่อหาเหตุผลเข้าข้างตนเองในการตัดสินใจ และฉันเกลียดที่จะเห็นการเปิดใช้งานที่นี่ JMTCW
MikeSchinkel

ต่อไปนี้เป็นตัวอย่างของคำถามที่เป็นคำตอบแรก "มันเป็นไปไม่ได้" และฉันตอบด้วยตัวอย่างที่แสดงว่า: wordpress.stackexchange.com/questions/972/#984มีวิธี(เกือบทุกครั้ง) ทำมันโดยไม่มีแฮ็คหลัก
MikeSchinkel

2
หากคุณเปลี่ยนแกนคุณจะต้องทำการเปลี่ยนแปลงอีกครั้งหลังจากแต่ละครั้งที่คุณอัพเกรดและคุณจะทำให้การติดตั้งของคุณไม่ได้มาตรฐานดังนั้นจึงเป็นเรื่องยากสำหรับคนที่จะช่วยคุณ เพียงแค่สร้างปลั๊กอินวิดเจ็ตเทมเพลตตะขอหรือวิธีการต่าง ๆ มากมายเวิร์ดเพรสให้คุณไม่ต้องเปลี่ยนคอร์
Wadih M.

Wadih ถูกต้อง ฉันได้ทำการเปลี่ยนแปลงไฟล์หลักบางไฟล์เพื่อแก้ไข / ปรับปรุง / ปรับแต่งสิ่งต่าง ๆ และฉันรู้สึกหงุดหงิดอยู่เสมอเมื่ออัพเกรดเพราะฉันต้องตรวจสอบการเปลี่ยนแปลงและนำแพตช์ของฉันไปใช้กับไฟล์ใหม่ สิ่งนี้จะน่าผิดหวังยิ่งขึ้นเมื่อไฟล์ใหม่แตกต่างจากไฟล์เก่าและตำแหน่งของการเปลี่ยนแปลงนั้นไม่ชัดเจนอีกต่อไป (หรือแม้แต่ปรากฏอยู่เลย)
Synetech

1
มันเป็นสิ่งที่ฉันกลัว บางครั้งเมื่อมีการกลั่นตะขอ (เช่นการปรับเปลี่ยนเว็บไซต์ของฉัน) ไม่เพียงตะขอที่ทำงานสำหรับเคล็ดลับบัฟเฟอร์ส่งออกมีadmin_body_classและadmin_footerซึ่งหมายถึงการจับภาพทั้งหน้า ฉันเพิ่งลองและมีเนื้อหาที่ต้องค้นหามากกว่า 2MB สำหรับส่วนที่เกี่ยวข้องจากนั้นจึงวิเคราะห์และแก้ไขก่อนที่จะส่งออก หรือฉันสามารถเพิ่มโค้ดหนึ่งบรรทัดในส่วนด้านขวาของmy-sites.phpและใช้เครื่องมือ diff เพื่อใช้แพทช์หลังจากอัปเดต (สมมติว่ามันถูกแก้ไขเลย) มันยากมากที่จะทำเรื่องต่อต้านการปรับเปลี่ยนคอร์ในสถานการณ์แบบนี้
Synetech

คำตอบ:


21

หากคุณต้องแฮ็คคอร์คุณควรลองทำในวิธีที่ทำให้ผู้อื่นสามารถขยายได้

เพิ่ม Action Hook

เก้าครั้งจากสิบคุณสามารถทำสิ่งที่คุณต้องการถ้ามีการdo_actionโทรพิเศษในไฟล์เฉพาะ ในกรณีที่เพิ่มการดำเนินการเอกสารนั้นและส่งแพทช์ผ่าน Trac หากมีเหตุผลที่ดีสำหรับแพทช์ของคุณ (เช่นคุณไม่ใช่คนเดียวที่จะเคยใช้มัน) จากนั้นคุณก็สามารถเพิ่มมันเข้าไปในคอร์ได้

ถัดไปสร้างปลั๊กอินแบบกำหนดเอง (คุณไม่ต้องปล่อย / แจกจ่ายมัน!) ที่เชื่อมโยงกับ hook ใหม่นี้และดำเนินการฟังก์ชันใด ๆ ที่คุณต้องการ

สร้างไฟล์หลักอีกครั้ง

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


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

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

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

หากการเปลี่ยนแปลงเกิดขึ้นแฮ็คของคุณจะกลายเป็นส่วนสำคัญและคุณไม่จำเป็นต้องกังวลเกี่ยวกับการเปลี่ยนแปลงในอนาคต หากไม่มีอย่างน้อยคุณก็มีเอกสารรายละเอียดเกี่ยวกับวิธีการนำแฮ็คกลับมาใช้ใหม่หลังจากที่คุณอัพเกรด WP ใน 3 เดือน


ถ้อยคำที่ดียิ่งขึ้นนั้นเป็นของฉัน :)
hakre

3

อย่าแฮ็คคอร์

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

แน่นอนแฮ็คหลัก!

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

การแฮ็กหลักเป็นสิ่งที่ทำให้ Wordpress วิวัฒนาการ

การพิจารณา

หากคุณไม่ต้องการติดตั้ง SVN แบบเต็มและคุณยังรู้ว่ามีไฟล์ (บางส่วน) ที่คุณเปลี่ยนแปลงคุณสามารถใช้เครื่องมือระดับต่ำเช่นDiff / Merge (สำหรับ win: WinMerge ) หรือบรรณาธิการที่มีความสามารถในการเปรียบเทียบ (เช่นNotepad ++ พร้อมปลั๊กอินเปรียบเทียบ ) บน Linux คุณสามารถติดตั้งโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ทำเช่นเดียวกัน แก้ไข Geanyมาพร้อมกับรวมเปลือกมีความสุขครับ .

ฉันชอบ Eclipse PDT สำหรับงานหนัก แต่นั่นไม่ใช่สำหรับการแก้ไขอย่างรวดเร็วหรือแฮ็ค

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


แฮ็คหลักไม่เคยเป็นทางออกที่ดีในระยะยาว ไม่เคย
Fredy31

@ Fredy31; เป็นวิธีเดียวที่จะทำให้การติดตั้งเวิร์ดเพรสของคุณทันสมัยทำงานและปลอดภัย นอกจากนี้"ระยะยาว" ที่คุณพูดถึงที่นี่ก็ยาวมากถ้าใช้เวลาสองปีและนานกว่านั้นในการจัดให้มีการแก้ไขไปยัง Wordpress แล้วจึงนำมันมาใช้อีกต่อไปสำหรับการรายงานปัญหาที่ไม่มีการแก้ไข ดูแล.
hakre

1
เห็นได้ชัดว่าการแฮ็คหลักเป็นปัญหา แต่ฉันพบว่าการต่อต้านและกรดกำมะถันที่นี่น่าแปลกใจ ในทุก ๆ ด้านของ FOSS การฟอร์กได้รับการสนับสนุนอย่างแข็งขัน ทำไมการปรับแต่ง WordPress ถึงคำสาปแช่ง? ฉันเคยเห็นโปรเจ็กต์อื่น ๆ นับไม่ถ้วนทำตามที่แนะนำโดยใช้ RCS เพื่อสร้างเวอร์ชันที่ปรับเปลี่ยนของโปรแกรมในขณะที่ติดตามลำต้นอยู่เสมอ +1 สำหรับการแจ้งเตือนที่ชัดเจน แต่บอกความจริงว่าเป็นไปได้จริง ๆ และให้คำแนะนำที่ชัดเจนว่าสามารถทำได้อย่างไรด้วยความยากลำบากน้อยที่สุด
Synetech

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

2

ปัญหาคือ:

  1. ทุกครั้งที่คุณทำการอัปเดตคอร์ (เช่นเนื่องจากการแก้ไขความปลอดภัย ฯลฯ ) คุณจะต้องอัปเดตด้วยตนเองแทนที่จะรันตัวอัปเดตอัตโนมัติ
    หากคุณต้องการทำสิ่งนี้ให้ชีวิตของคุณง่ายขึ้น:
    • ทำเครื่องหมายการเปลี่ยนแปลงทุกครั้งด้วยเครื่องหมายทั่วไป (.eg // PATCH STARTและ// PATCH END)
    • ใช้เครื่องมือเช่น WinMerge เพื่อเปรียบเทียบแหล่งข้อมูลที่มีอยู่กับแหล่งข้อมูลใหม่และคัดลอกข้ามการเปลี่ยนแปลงที่จำเป็น
    • คุณจะต้องระวังในกรณีที่รหัสพื้นที่ที่คุณคัดลอกมีการเปลี่ยนแปลงและทำการเปลี่ยนแปลงที่เหมาะสมกับแพทช์ของคุณ
    • โปรดทราบว่านี่เป็นงาน 'ไม่มีที่สิ้นสุด' ใช้เวลาเรียกเก็บเงินได้เว้นแต่คุณจะสามารถเติมเงินให้ลูกค้าได้
  2. คุณอาจทำให้เกิดปัญหาความไม่ลงรอยกันกับปลั๊กอินที่คาดว่าแกนทำงานในบางวิธี - นี้จะต้องมีการทดสอบเพิ่มเติม

บางครั้งนี่เป็นสิ่งที่หลีกเลี่ยงไม่ได้ 100% แต่ฉันเกือบจะสามารถหาวิธีอื่นในการบรรลุสิ่งต่าง ๆ หรือเปลี่ยนแปลงข้อมูลจำเพาะเนื่องจากค่าใช้จ่ายในการทำสิ่งนี้ มันเป็นแค่ฝันร้ายในการบำรุงรักษาและหลาย ๆ คนใช้แฮ็คหลักแทนการมองหาทางออกที่เหมาะสม

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