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.phpvà 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_Querytrong my-cron.phptệp, bạn cần tải wp-load.phptệp. Vì vậy, trong my-cron.phptậ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 WPDBlớ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 WPDBlớp hoặc $wpdbbiế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_Queryvớ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_Queryhoặc wp_delete_postchứ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.phpkhông thể truy cập công khai. Ví dụ: bạn có thể thêm phần sau vào đầu my-cron.phptệp để chỉ cấp quyền truy cập localhost:
$allowed_ip = '127.0.0.1';
if( $allowed_ip !== $_SERVER['REMOTE_ADDR'] ) {
exit( 0 );
}
productkhô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