Tải WordPress trong PHP Script tùy chỉnh:
Bạn cần tải chức năng cốt lõi WordPress cần thiết trong tập lệnh PHP tùy chỉnh của mình WP_Query
để hoạt động chính xác.
Ví dụ: giả sử bạn có một tệp PHP tùy chỉnh có tên my-cron.php
và WordPress được cài đặt trong thư mục gốc, như thế này:
public_html/
index.php
my-cron.php <--
wp-load.php
wp-settings.php
...
wp-admin/
wp-content/
wp-includes/
Trong thiết lập này, nếu bạn muốn sử dụng WP_Query
trong my-cron.php
tệp, bạn cần tải wp-load.php
tệp. Vì vậy, trong my-cron.php
tập tin bạn cần phải có MÃ sau:
if ( ! defined('ABSPATH') ) {
/** Set up WordPress environment */
require_once( dirname( __FILE__ ) . '/wp-load.php' );
}
Truy cập WP_Query:
Tại thời điểm này, bạn sẽ có quyền truy cập WP_Query
, vì vậy bạn có thể sử dụng nó như thế này:
// simply selecting posts with category name "wordpress"
$the_query = new WP_Query( array( 'category_name' => 'wordpress' ) );
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
}
else {
echo "No post found for category named wordpress";
}
Xóa bài viết:
Tuy nhiên, WP_Query không có chức năng xóa. Cho rằng bạn sẽ cần phải sử dụng wp_delete_post()
chức năng hoặc WPDB
lớp. Việc sử dụng wp_delete_post()
được khuyến nghị vì nó sẽ quan tâm đến nhiều phụ thuộc, tuy nhiên, nếu bạn cần kiểm soát nhiều hơn, thì bạn có thể sử dụng biến WPDB
lớp hoặc $wpdb
biến toàn cục, nhưng hãy cẩn thận nếu bạn chọn đường dẫn đó.
Ví dụ: CODE sau sẽ xóa bài đăng có ID 1
:
$deleted = wp_delete_post( 1 );
if( $deleted === false ) {
echo "Couldn't delete Post with ID=1";
}
else {
echo "Deleted Post with ID=1";
}
Tất nhiên bạn có thể kết hợp WP_Query
với wp_delete_post
để tìm và xóa các bài viết đáp ứng các tiêu chí cụ thể.
Cài đặt Cron:
Khi bạn đã viết xong tập lệnh PHP tùy chỉnh, bạn cần thiết lập công việc định kỳ để chạy dưới dạng yêu cầu HTTP, như sau:
5 * * * * wget -q -O - http://your-domain.com/my-cron.php
Bảo vệ:
Vì truy cập WP_Query
hoặc wp_delete_post
chức năng không yêu cầu bất kỳ xác thực (hoặc quyền) theo mặc định, bạn cần đảm bảo my-cron.php
không thể truy cập công khai. Ví dụ: bạn có thể thêm phần sau vào đầu my-cron.php
tệp để chỉ cấp quyền truy cập localhost
:
$allowed_ip = '127.0.0.1';
if( $allowed_ip !== $_SERVER['REMOTE_ADDR'] ) {
exit( 0 );
}
product
không? - Vì vấn đề của tôi là, tôi nhận được thông báo lỗi này:PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8388616 bytes) in /var/www/vhosts/httpdocs/wp-includes/wp-db.php on line 1842