Có tập tin Hàm.php nào hoạt động cho bất kỳ chủ đề nào không?


11

Có một số loại tệp tin.php toàn cầu hoạt động cho bất kỳ chủ đề nào không?

Vấn đề là ở đây:

Khi tôi thay đổi tệp tin.php trong bất kỳ chủ đề nào, tôi cần quan tâm đến hai thay đổi: Đầu tiên, tôi cần quan tâm đến các bản cập nhật của chủ đề đó. Thứ hai, tôi cần quan tâm đến việc thay đổi chủ đề của trang web.

Vì vậy, thay vì thực hiện các thay đổi trong hàm.php của một chủ đề, có thể thực hiện thay đổi trong một số tệp tin.php không phụ thuộc vào bất kỳ chủ đề nào không?


4
Là tiền thưởng thực sự cần thiết? Câu hỏi đã có câu trả lời hay
onetrickpony

Vì @Mohit Bumb là người đưa ra a) tiền thưởng và b) là người đầu tiên đề xuất sử dụng plugin, tôi nói rằng anh ta nên là người nhận được điểm đại diện (trở lại). IMO tiền thưởng là không cần thiết (và tôi đoán anh ta không biết rằng anh ta phải thực sự cho đi ).
kaiser

Câu trả lời:


15

Sự khác biệt giữa mã chủ đề và mã không chủ đề là tổ chức hơn là kỹ thuật. Bất kỳ mã nào đang hoạt động đều đóng góp vào môi trường kết quả, không quan trọng nó được tải từ đâu.

Có một số nơi mã được tải từ đó, không phải là một phần của lõi WordPress:

  • wp-config.php tập tin cấu hình
  • chủ đề hoạt động (và cha mẹ của nó trong các chủ đề con)
  • plugin hoạt động
  • phải sử dụng plugin
  • drop-in (những thứ này hơi tiên tiến và phục vụ các mục đích rất cụ thể)

Vị trí điển hình cho mã của riêng bạn, không phải là một phần của chủ đề, là tạo một plugin. Các cách tiếp cận khác không có lợi ích từ trường hợp chung, nhưng giao diện giả (quản lý thông qua khu vực quản trị) và các tiện ích kỹ thuật (kích hoạt / hủy kích hoạt / gỡ cài đặt) của plugin thông thường.


+1 cho cả bạn và @kaiser. Tôi tin rằng câu trả lời đúng là 1) Tạo Chủ đề con để chứa chức năng tùy chỉnh functions.phphoặc 2) tạo Plugin tùy chỉnh để chứa chức năng đó, để nó có thể di động giữa các Chủ đề khác nhau.
Chip Bennett

@Chip vì câu hỏi hỏi về việc giữ mã khi chuyển đổi chủ đề Tôi không thấy chủ đề con là phù hợp. Nếu bạn muốn chuyển sang chủ đề là chủ đề con thì sao? Plugin là thích hợp nhất cho các yêu cầu nhất định.
Rarst

đó là lý do tại sao tôi bầu chọn cả hai bạn. :) Nhưng, bạn vẫn có thể sử dụng Chủ đề con khi chuyển Chủ đề; chỉ cần thay đổi Template:thẻ một cách thích hợp trong Chủ đề trẻ em style.css.
Chip Bennett

@Chip bạn đã không nhận được quan điểm của tôi. Nếu tôi muốn sử dụng chủ đề con thì sao? Tôi tạo chủ đề con cho Twenty Eleven bằng mã của mình. Sau đó, tôi muốn chuyển sang chủ đề cũng là chủ đề con của Twenty Eleven (hoặc phụ huynh khác). Tôi không có con đường nào, ngoài việc hợp nhất thủ công hai chủ đề con. Sau đó bỏ hợp nhất lần sau tôi đổi chủ đề. Đó là một mớ hỗn độn.
Rarst

Tôi sử dụng phải sử dụng cho việc này. Tôi thấy đó là một cách nhanh chóng, đơn giản để thêm chức năng, móc và mã ngắn có sẵn để sử dụng trên các chủ đề
chiliNUT

6

Đó là một vấn đề thực sự và nhiều người phải đối mặt với nó khi họ thay đổi chủ đề nhưng có một giải pháp đơn giản.

thêm chức năng đó vào một trang mới không phải hàm.php .

Để hiểu plugin nào dành cho những gì không bỏ lỡ, hãy đặt tên cho plugin đó như:

/*
Plugin Name: XYZ
*/

3

Là một bổ sung cho câu trả lời @MBTheDeveloper.

Các tùy chọn khác sẽ là:

  1. Tạo một chủ đề con cho chủ đề hiện tại của bạn và sử dụng tệp tin.php từ cái này (đây là "cách thực hành tốt nhất").
  2. Sử dụng includetrong tệp php chức năng chủ đề của bạn và tải tệp tùy chỉnh-function.php có chứa mã tùy chỉnh của bạn.

2

Đừng thay đổi cụ thể trang web của bạn trong tệp tin.php của chủ đề.

Thay vào đó, hãy tạo một plugin dành riêng cho trang web. Tôi thích sử dụng tên miền của trang web, như "ottopress.com". Sau đó đặt đoạn mã của bạn vào plugin đó và chỉ để nó hoạt động trên trang web đó.

Ngoài ra, khi bạn có một đoạn các thay đổi liên quan, hãy tạo một plugin cụ thể cho riêng họ. Điều đó cho bạn tùy chọn bật / tắt các đoạn mã liên quan khi cần thiết.


2

Một số giải thích

Trước tiên, bạn cần hiểu mục đích của hàm.php trong một chủ đề. Hàm.php về cơ bản chỉ là một tệp plugin với bất kỳ tên nào mà nếu có thì sẽ được Wordpress tự động tải. Wordpress tải function.php của chủ đề hiện tại của bạn cho các trang đầu wordpress và cũng như các trang back-end (admin).

Không có sự khác biệt giữa plugin và tests.php ngoại trừ các plugin có tên và chúng có thể được kích hoạt / khử kích hoạt bất kể các plugin và chủ đề khác. Funtions.php được đính kèm với chủ đề hiện tại của bạn và nếu bạn chuyển sang chủ đề khác, Wordpress sử dụng hàm.php của chủ đề mới chứ không phải hàm.php cũ của bạn với các sửa đổi tùy chỉnh.

Các bản cập nhật chủ đề cũng ghi đè các hàm.php và không có cách nào để tránh nó, ngay cả khi bạn đặt các sửa đổi tùy chỉnh của mình trong các tệp mã riêng biệt và đưa nó vào fucntions.php, bạn sẽ phải thêm dòng bao gồm sau mỗi lần cập nhật.

Nói chung là loại mã nên có trong hàm.php:

  • các chức năng được sử dụng trong các tệp mẫu của chủ đề của bạn.
  • tùy chọn chủ đề
  • thanh bên
  • menu điều hướng
  • định dạng bài
  • đăng hình thu nhỏ
  • bất kỳ mã nào chỉ liên quan đến chủ đề hiện tại.

Khi bạn muốn giữ lại các sửa đổi tùy chỉnh của mình ngay cả khi bạn chuyển đổi chủ đề. Bởi vì chủ đề con sẽ không hoạt động trong trường hợp này vì bạn sẽ chuyển đổi chủ đề và hàm.php của chủ đề con sẽ không được sử dụng.

Giải pháp

Giải pháp duy nhất theo khuyến nghị của @Otto là tạo tệp plugin. Cách tiếp cận bạn có thể thực hiện để tạo plugin cụ thể cho trang web của mình là tạo một thư mục có tên trang web của bạn trong 'wp-content / plugin' và tạo các tệp plugin trong đó.

Tại sao tập tin plugin? và không phải tập tin plugin đơn.

Chức năng của trang liên quan đến nhóm liên quan đến mã trong các tệp plugin riêng biệt và đừng quên thêm tiêu đề plugin trong tất cả các tệp plugin của bạn để chúng được Wordpress nhận ra là các plugin riêng biệt. Sau đó, bạn sẽ có khả năng kích hoạt / hủy kích hoạt các tính năng / chức năng khác nhau của trang web của mình mà không phá vỡ mọi thứ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.