WordPress sẽ không thực thi PHP bên trong bài đăng WordPress. Để thực hiện việc này, chúng tôi sẽ cần sử dụng plugin cho phép bạn chèn đoạn mã PHP hoặc xác định thủ công đoạn mã bằng cách sử dụng mã ngắn
Có hai cách để thêm PHP vào bài đăng WordPress từ trình chỉnh sửa. Đầu tiên, sử dụng plugin để làm điều đó cho bạn, là tùy chọn dễ nhất và có thể an toàn hơn. Có nhiều tùy chọn plugin ngoài kia, nhưng chúng tôi đang minh họa bằng “Đoạn mã PHP”. Plugin này hoạt động bằng cách cho phép bạn xác định một đoạn mã, sau đó chèn đoạn mã đó sau thông qua một mã ngắn trong bài đăng thực tế của bạn
Làm điều đó với một plugin
Để bắt đầu, hãy cài đặt plugin Insert PHP Code Snippet, sau đó bấm kích hoạt
Sau đó, điều hướng đến phần Đoạn mã PHP trong menu của plugin
Nhấp vào “Thêm đoạn mã PHP mới”
Tại đây, bạn có thể tạo đoạn mã của mình. Tên theo dõi là tên sẽ hiển thị trong trình chỉnh sửa và tên bạn có thể sử dụng để gọi tên theo cách thủ công. Nó không hỗ trợ khoảng trắng, nhưng nếu bạn chèn khoảng trắng, nó sẽ tự động thay thế khoảng trắng đó
Chỉ cần thêm mã bạn muốn trong đoạn mã này vào hộp văn bản, sau đó nhấp vào tạo
Nó sẽ được kích hoạt theo mặc định, nhưng hãy đảm bảo bằng cách di chuột qua biểu tượng ở phía bên trái của cột "hành động"
Tự động thêm đoạn trích vào bài đăng của bạn
Nếu bạn đang sử dụng trình chỉnh sửa Gutenberg [Block], trước tiên bạn sẽ muốn thêm một khối cổ điển
Trong khối này, bạn sẽ thấy một nút mới cho PHP, hãy chọn đoạn trích của bạn
Bạn sẽ nhận được một cái gì đó trông như thế này
Nếu bạn là một trong số hàng triệu người sử dụng plugin trình chỉnh sửa cổ điển hoặc đang sử dụng phiên bản cũ hơn của WordPress, thì nó sẽ ở trên thanh công cụ theo mặc định
Khi bạn đã thêm đoạn mã của mình, hãy cập nhật và kiểm tra bài đăng. Bạn sẽ thấy kết quả của PHP của bạn
Thêm đoạn mã PHP vào bài đăng của bạn theo cách thủ công
Tất nhiên, bạn có thể chỉ cần nhập nó bằng cách sử dụng định dạng bên dưới
[xyz-ips snippet=”Chèn tên theo dõi vào đây”]
Thêm PHP vào bài đăng của bạn bằng một mã ngắn
Nếu bạn từ chối cài đặt một plugin khác, bạn có thể làm những gì các plugin này làm theo cách thủ công với kết quả tương tự. Tất nhiên, đây không phải là cách được đề xuất, nhưng bạn có thể làm được
Để làm điều này, bạn sẽ tận dụng các mã ngắn trong các chức năng của chủ đề của mình. tập tin php. Thông báo trước khi làm điều này là nó sẽ chỉ hoạt động với chủ đề này được áp dụng. Nếu làm theo cách này, bạn có thể muốn sử dụng một chủ đề con, đảm bảo rằng các chức năng mới của bạn không bị ghi đè khi chủ đề của bạn được cập nhật
Tìm chức năng của bạn. php trong thư mục chủ đề của bạn và thêm mã ngắn của bạn vào đó. Tham khảo liên kết ở trên tới WordPress Codex nếu bạn không chắc chắn cách tạo nó. Đây là một ví dụ đơn giản
function test_func[ $atts ]{
return 'This is PHP from your functions file' ;
}
add_shortcode[ 'test', 'test_func' ];
Lưu nó, sau đó gọi nó trong bài viết của bạn với
[kiểm tra]
Bây giờ bạn sẽ thấy điều này
Nếu bạn cần bất kỳ trợ giúp nào để phát triển trang web WordPress của mình, thì không cần tìm đâu xa ngoài việc phát triển WordPress chuyên nghiệp tại CodeClouds. Chúng tôi thực hiện các chủ đề WordPress tùy chỉnh, phát triển plugin WooC Commerce và tích hợp CRM. Liên hệ với chúng tôi hôm nay
Khi nói đến PHP, rất nhiều nhà phát triển yêu thích ngôn ngữ này, rất nhiều nhà phát triển ghét ngôn ngữ này và rất nhiều nhà phát triển thường chỉ sử dụng nó để hoàn thành công việc của họ.
Đối với những gì nó có giá trị, tôi của trại thứ hai. Tôi nghĩ PHP là tốt. Giống như bất cứ thứ gì, nó không phải là không có vấn đề, nhưng tôi thích làm việc với nó đủ tốt và coi nó như một cách để hoàn thành công việc so với một ngôn ngữ trên bầu trời đối với một số kiểu phát triển không tưởng.
Một số điều mà các nhà phát triển yêu thích ở PHP—các tính năng và tính linh hoạt của nó—chính là những điều thường khiến chúng tôi vấp ngã. Danh sách này dài, nhưng trong thế giới WordPress, một trong những điểm gây nhầm lẫn phổ biến nhất là cách thích hợp để bao gồm các tệp bên ngoài
PHP cung cấp bốn cách để làm điều này và WordPress thậm chí còn cung cấp biến thể của riêng nó
Trong bài viết này, chúng tôi sẽ khảo sát bốn cách mà PHP cung cấp để bao gồm các tệp, xem hướng dẫn về thời điểm sử dụng từng cách và xem xét các tính năng của WordPress để bao gồm các tệp
Bao gồm các tệp với PHP
Nói chung, bao gồm các tệp bằng PHP đề cập đến hành động bao gồm một tập lệnh khác vào ngữ cảnh của tập lệnh mà bạn hiện đang làm việc
Bạn có thể coi điều này giống như việc nhập một tệp sao cho khi tệp được trả về từ máy chủ, các tập lệnh được kết hợp theo thứ tự mà chúng được đưa vào và sau đó được diễn giải thành một tệp duy nhất
Trước tiên, chúng ta sẽ xem xét các cách bao gồm tệp trong PHP và ý nghĩa của từng cách. Ở cuối bài viết, chúng tôi sẽ xem xét khi nào chúng ta nên làm điều này
Sử dụng --website
25
Theo hướng dẫn sử dụng PHP
bao gồm [] sẽ bao gồm và đánh giá tệp đã chỉ định. Nếu tệp không được tìm thấy, một cảnh báo PHP sẽ được đưa ra
Nói một cách đơn giản, điều này có nghĩa là PHP sẽ xem tệp mà bạn đang cố đưa vào. Nếu nó được tìm thấy, thì nó sẽ được thêm vào tập lệnh của bạn ở đúng vị trí mà bạn đã khai báo
Điều này là quan trọng để hiểu. Ví dụ: giả sử bạn đang viết một tập hợp các hàm phụ thuộc vào một tập hợp các hàm trước đó. Trong trường hợp đó, trước tiên bạn cần đảm bảo rằng tệp khác được đưa vào
Mặt khác, nếu bạn đang tìm cách đưa vào một tập hợp các chức năng hoặc tệp bên ngoài ở giữa một chức năng hiện có, thì bạn có thể đưa nó vào chính xác vị trí mà bạn cần
Thứ hai, lưu ý rằng nếu tệp bị thiếu, PHP sẽ đưa ra cảnh báo. Tùy thuộc vào cấu hình máy chủ, bạn có thể thấy phần này được hiển thị trên trình duyệt hoặc bạn có thể thấy phần này được ghi vào tệp nhật ký [hoặc cả hai]
Tuy nhiên, các cảnh báo chỉ có vậy—chúng không được coi là nghiêm trọng và thường không dừng quá trình thực thi, nhưng chúng rất quan trọng cần lưu ý vì chúng thường ngụ ý rằng một phần công việc của bạn không được tải và/hoặc diễn giải đúng cách
Cuối cùng, lưu ý rằng khi một tệp được tải bằng
--website25, tệp đó sẽ có quyền truy cập vào tất cả các biến được xác định trước đó trong tập lệnh hiện có của bạn
Ví dụ: giả sử bạn đang làm việc với một chức năng và khi thực hiện được nửa chừng chức năng, bạn sẽ đưa vào một tệp riêng. Tệp riêng biệt đó sẽ có quyền truy cập vào các biến được xác định trước đó trong hàm chứa nó
Mặc dù bạn có thể xem điều này là thuận tiện, nhưng nó làm cho tập lệnh bên ngoài hơi không rõ ràng vì nó không nhất thiết cho thấy rằng nó phụ thuộc vào các biến được xác định bên ngoài. Điều này có thể gây nhầm lẫn, đặc biệt là khi làm việc với một nhóm
Sử dụng --website
27
Lấy trực tiếp từ hướng dẫn sử dụng PHP
include_once[] sẽ thực hiện hành vi tương tự như include[] nhưng sẽ không bao gồm lại tệp nếu nó đã được bao gồm
Rõ ràng là không cần phải dành nhiều thời gian để nói về những điểm chung của
--website27, nhưng có một số điểm khác biệt chính giữa cách thức hoạt động của
--website27 và cách thức hoạt động của
--website25
Đầu tiên, mặc dù
--website27 hoạt động giống như
--website25, nhưng nó sẽ không cho phép bạn thêm lại tập lệnh. Điều này có nghĩa là nếu một tệp bên ngoài đã được đưa vào một nơi khác trong dự án của bạn, thì đó là vị trí cuối cùng mà tệp đó đã được đưa vào
Vì vậy, lợi thế của điều này là gì? . Nhớ lại rằng khi sử dụng
--website25, các tập lệnh có quyền truy cập vào các hàm và biến được xác định ở trên chúng
Nếu bạn chọn xác định một tập hợp các biến hoặc hàm mới trong một tệp và đưa nó vào một tập lệnh khác, đồng thời không sử dụng
--website27, thì bạn sẽ gặp rủi ro khi xác định lại các hàm và biến, có khả năng gây ra sự cố nghiêm trọng với việc thực thi của bạn
Yêu cầu tập tin với PHP
Yêu cầu các tệp tương tự như bao gồm các tệp ở chỗ đó là một cách khác để bạn có thể đưa một tập lệnh vào tập lệnh mà bạn hiện đang viết, nhưng nó mang một tập hợp các hàm ý riêng về lỗi và bảo mật
Mặc dù bạn có thể coi hành động yêu cầu một tệp giống như cách bạn có thể bao gồm một tệp, nhưng nó mang hàm ý rằng nó mạnh hơn—nghĩa là, tệp bên ngoài được yêu cầu để thực thi
Như chúng ta sẽ thấy, đây chính xác là trường hợp này
Sử dụng --website
35
Một lần nữa, trực tiếp từ hướng dẫn sử dụng PHP
Yêu cầu [] thực hiện giống như bao gồm [] nhưng sẽ đưa ra lỗi nghiêm trọng PHP nếu không tìm thấy tệp
Vì vậy, đây là vấn đề với
--website35. nó sẽ thực hiện hành động tương tự như
--website25 khi nhập tập lệnh bên ngoài vào ngữ cảnh của tập lệnh mà bạn đang làm việc, nhưng nếu không tìm thấy tệp, nó sẽ báo lỗi và tạm dừng hoàn toàn việc thực thi
Điều này có nghĩa là ứng dụng của bạn dừng lại. Với
--website25, bạn sẽ nhận được cảnh báo và nó sẽ cố gắng tiếp tục
Ở một mức độ nào đó, có vẻ như yêu cầu tệp là cách đúng đắn. Rốt cuộc, tại sao bạn lại muốn mạo hiểm đưa vào một thứ gì đó chỉ để có một cảnh báo về lỗi tiềm ẩn trong ứng dụng?
Nhưng tất cả đều bắt nguồn từ bản chất của những gì bạn đang làm. Đôi khi, các cảnh báo PHP đơn giản không sao—chẳng hạn như quên khởi tạo chỉ mục của một mảng—đôi khi, bạn cần báo lỗi
Không có quy tắc cứng và nhanh nào về thời điểm sử dụng
--website39 so với.
--website40, nhưng hãy suy nghĩ chín chắn về bản chất của những gì bạn đang làm và những tác động mà nó mang lại nếu nó thất bại
Sử dụng --website
41
Cuối cùng, từ hướng dẫn sử dụng PHP
--website41 hoạt động giống như--website35 nhưng sẽ không bao gồm tệp lần thứ hai nếu nó đã được bao gồm
Đây có thể là cách dễ hiểu nhất vì chúng ta đã trình bày tương đối chi tiết về ba chức năng cuối cùng. Nói một cách đơn giản,
--website41 thực hiện các chức năng giống như yêu cầu, mặc dù nó sẽ không tìm cách thêm lại tệp nếu tệp đó đã được tải trong tập lệnh của bạn
Quy tắc của ngón tay cái
Ngoài việc suy nghĩ nghiêm túc xem chức năng nào là tốt nhất cho bản chất dự án của bạn, đây là hai quy tắc kinh nghiệm bổ sung cần cân nhắc khi làm việc với
--website25 và
--website35
--website
41 tốt hơn cho các trang web lớn hơn vì nó thực hiện một số công việc bổ sung ở cấp thấp hơn có tác động đến bảo mật và hiệu suất--website
27 nhanh hơn và thường được coi là chấp nhận được đối với các trang web nhỏ hơn
Đủ dễ dàng, nhưng còn các chức năng của trình trợ giúp WordPress thì sao?
Bao gồm các tệp trên các thư mục
Mọi thứ có thể trở nên khó hiểu khi bạn đang làm việc trên một dự án có nhiều tệp trải rộng trên nhiều thư mục. Hãy nhớ rằng đường dẫn của tệp bạn muốn đưa vào được giải quyết đối với tệp gốc trực tiếp
Ví dụ, xem xét cấu trúc thư mục sau
--website5
--website
--website7
--website8
--website9
--website0
--website1
--website2
--website3
--website4
--website0
--website1
--website2
--website3
--website4
--website5
--website6
--website7
--website8
--website9
--website70
--website71
--website72
--website73
--website74
--website75
--website76
--website77
Đây là mã bên trong tiêu đề. tệp php
--website5
--website79
--website7
--website9
--website82
--website1
--website3
--website85
Đây là mã bên trong các hàm. tệp php
--website5
--website79
--website7
--website9
--website90
--website1
--website92
--website3
--website94
--website0
--website2
--website85
Và đây là mã bên trong chia sẻ. tệp php
--website5
--website79
--website7
--website9
--website02
--website1
--website3
--website05
--website0
--website2
--website85
Khi bạn bắt đầu, người ta thường nghĩ rằng mã để chia sẻ. php sẽ báo lỗi vì các hàm. php không nằm trong cùng thư mục với share. php. Tuy nhiên, câu lệnh
--website49 nằm trong tiêu đề. php, do đó, trình thông dịch sẽ tìm trong thư mục có tiêu đề. php có trong các hàm. tệp php
Điều này là do PHP sẽ phân tích cú pháp các hàm. php trong ngữ cảnh của tiêu đề. php. Vì cả hai đều nằm trong cùng một thư mục, chức năng sẽ được đưa vào tệp của chúng tôi như mong đợi
Phạm vi chức năng và biến với các tệp được bao gồm
Khi bạn bao gồm một tệp bên trong tệp mẹ, phạm vi của các biến được xác định trong tệp được bao gồm sẽ giống như phạm vi biến tại dòng cụ thể đó. Tuy nhiên, bất kỳ chức năng và lớp nào mà bạn đã xác định trong tệp được bao gồm sẽ có phạm vi toàn cầu. Hãy hiểu nó thông qua một ví dụ
Tệp đầu tiên của chúng tôi có tên là inc. php có mã sau
--website5
--website79
--website7
--website9
--website90
--website1
--website92
--website3
--website0
--website18
--website2
--website4
--website21
--website6
--website23
--website8
--website25
--website70
--website94
--website72
--website74
--website30
--website76
--website32
--website85
Tệp thứ hai của chúng tôi có tên là main. php có mã sau
--website5
--website79
--website7
--website9
--website38
--website1
--website3
--website41
--website0
--website05
--website2
--website4
--website46
--website6
--website48
--website8
--website70
--website01
--website72
--website03
--website74
--website76
--website06
--website32
--website08
--website09
--website85
Chúng tôi đã xác định một biến có tên
--website50 bên trong hàm của mình
--website51. Vì vậy, nó sẽ không thể truy cập được trong tệp chính của chúng tôi vì phạm vi của nó bị giới hạn ở hàm
--website51. Mặt khác, hàm
--website53 được xác định bên trong
--website51 có thể truy cập được đối với chúng tôi vì nó có phạm vi toàn cầu
Bạn nên cân nhắc đọc hướng dẫn này về cách hiểu phạm vi biến trong PHP để tìm hiểu về phạm vi biến trong PHP
Bao gồm các tệp với WordPress
Với tất cả những gì đã nói, có nhiều cách tốt hơn là sử dụng
--website25 và
--website35 để đưa các mẫu vào dự án WordPress của bạn
Ví dụ: giả sử bạn có một số tệp vòng lặp, bao gồm một tệp cho định dạng bài đăng
- tiêu chuẩn vòng lặp. php
- vòng lặp hình ảnh. php
- trích dẫn vòng lặp. php
Và bạn cần đưa chúng vào một. php bất cứ khi nào bạn đang làm việc trên một trang bài đăng của chủ đề
Tại một thời điểm, có thể chấp nhận làm điều gì đó như thế này
--website5
--website12
Nhưng đó không còn là cách thực hành tốt nhất
Sử dụng --website
57
WordPress hiện cung cấp chức năng,
--website57, là một phần của API gốc và được sử dụng riêng để tái sử dụng các phần—hoặc mẫu—của mã [ngoại trừ đầu trang, chân trang và thanh bên] thông qua chủ đề của bạn
Hàm chấp nhận hai đối số
- Đối số đầu tiên là sên cho mẫu. Trong ví dụ trên, đó sẽ là
--website
59 - Đối số thứ hai là tên của mẫu. Trong ví dụ trên, đó sẽ là
--website
60,--website
61 hoặc--website
62
Theo ví dụ của chúng tôi ở trên, giả sử rằng chúng tôi đang ở trong Vòng lặp và chúng tôi muốn đưa vào mẫu định dạng bài đăng trích dẫn. Trong trường hợp đó, chúng tôi sẽ làm như sau
--website5
--website14
--website7
--website9
--website17
--website1
--website3
--website94
Hoặc, giả sử rằng bạn đã đặt tên cho các mẫu của mình để phù hợp với các loại định dạng bài đăng, bạn có thể làm điều gì đó gọn gàng hơn
--website5
--website22
Sạch sẽ, phải không?
Bạn thực sự có thể tiến thêm một bước nữa. Giả sử bạn đã trừu tượng hóa mã phân trang của mình thành tệp mẫu riêng có tên là phân trang. php. Sử dụng
--website57, bạn có thể đưa nội dung này vào toàn bộ trang web của mình, chẳng hạn như ở phần chân trang. php hoặc trong chỉ mục. php, đơn. php, kho lưu trữ. php, v.v. , đơn giản bằng cách thêm
--website5
--website24
Dễ dàng hơn nhiều, phải không?
Khi nào tôi nên sử dụng cái gì?
Vì vậy, sau tất cả những điều này, chúng ta vẫn chưa thực sự thảo luận về nguyên tắc khi nào nên sử dụng cái gì. Tôi không phải là người có thẩm quyền về vấn đề này, nhưng đây là các quy tắc chung mà tôi tuân theo
- Khi phát triển chủ đề, tôi luôn sử dụng
--website
57 - Khi phát triển plugin, tôi hầu như luôn sử dụng
--website
27 và tôi thường sử dụng nó một lần trong một chức năng. Bạn có thể thấy điều này trong bản soạn sẵn của tôi - Nếu plugin tôi đang viết sẽ được sử dụng trên một trang web rất lớn, thì tôi sẽ sử dụng
--website
41
Đó là tất cả
Đọc thêm
Để biết giải thích chi tiết hơn về những nội dung được đề cập trong bài viết này, hãy nhớ đọc các trang hướng dẫn sử dụng cho từng chức năng
--website
25--website
27--website
35--website
41--website
57
Bài đăng này đã được cập nhật với sự đóng góp từ Monty Shokeen. Monty là một nhà phát triển full-stack, người cũng thích viết hướng dẫn và tìm hiểu về các thư viện JavaScript mới