Câu trả lời:
Chúng được định nghĩa như sau:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
dirname
là một hàm PHP trả về đường dẫn của thư mục mẹ và wp-includes
khá tự giải thích.
Tôi sẽ nói ABSPATH
là tốt hơn bởi vì đó là một trong những điều đầu tiên WP tải và nó cũng có vẻ tốt hơn :) Nhưng không có "cách đúng" thực sự bởi vì cả hai đều hoạt động.
if ( ! defined( 'WPINC' ) ) die;
và if ( ! defined( 'ABSPATH' ) ) exit;
thêm một lớp bảo mật bổ sung bằng cách ngăn chặn mọi truy cập trực tiếp vào tệp plugin của bạn. ABSPATH
là một hằng số PHP được xác định bởi WordPress trong lõi của nó.
Nếu tệp plugin của bạn được truy cập từ bên ngoài WordPress, hằng số ABSPATH
hoặc WPINC
sẽ không được xác định, do đó, nó sẽ thoát khỏi mã plugin, ngăn chặn mọi truy cập trái phép vào mã của bạn.
ABSPATH
và WPINC
được định nghĩa trong lõi WordPress là:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
Cả hai đều được sử dụng cho cùng một mục đích.
Sự khác biệt giữa WPINC và ABSPATH là gì?
Bạn có thể tự kiểm tra. Chỉ cần nhìnwp-load.php
vào gương WordPress trên GitHub.
Ngay cả một cái nhìn nhanh sẽ cho thấy câu trả lời hiện được chọn không còn đúng như cách ABSPATH
xác định. Và nếu bạn so sánh các thẻ khác nhau trên GitHub, bạn sẽ thấy ABSPATH
định nghĩa thực sự thay đổi theo thời gian.
Cái nào là cách 'đúng' để làm điều đó?
Vì những thứ này được sử dụng để bảo mật, tôi sẽ đi ABSPATH
. Cơ sở lý luận ABSPATH
không chỉ được xác định đầu tiên trong WP bootstrapper, WPINC
được định nghĩa theo một điều kiện trong cùng một tệp và do đó, có nhiều khả năng gặp phải hồi quy trong tương lai.
Ngoài ra, trong khi không được hỏi rõ ràng, bạn đã cung cấp các ví dụ sử dụng cả hai die
và exit
. Theo đó devdocs.io
, dựa trên tài liệu API chính thức, die
tương đương với exit
, vì vậy bạn có thể chọn một trong hai và nó sẽ không tạo ra sự khác biệt.
Cả hai die
và exit
chấp nhận lập luận, vì vậy bạn có thể xem xét sử dụng chúng để tạo ra một số thông tin hữu ích, chẳng hạn như một phiên bản thẻ hoặc liên hệ thông tin được mã hóa, khi Abend, hoặc vượt qua một mã thoát như 0
hoặc -1
để chế biến tiếp.
Cũng đáng chú ý là đó wp_die
là một điều quá. Không bị nhầm lẫn với các phần mềm dựng sẵn PHP, nhưng khen ngợi chúng đã được sử dụng trong việc xuất ra HTML ngoài văn bản thuần túy và được sử dụng tự do trong toàn bộ lõi WordPress hiện tại. Tìm hiểu thêm vềwp_die
WordPress.org.
if ( ! defined( 'ABSPATH' ) ) exit;
... nhưng, có lẽ, hãy xem xét rằng phạm vi của đoạn trích này đảm bảo rằng wordpress được tải 'WPINC' tốt hơn vì có nhiều wordpressfull nhìn chằm chằm vào 'WP'.