Tôi có một công thức IFTTT tạo ra các bài đăng cho tôi trong một số trường hợp, nhưng vì một số lý do kỳ lạ, nó tạo ra ba, đôi khi bốn bài đăng có cùng nội dung.
Tôi muốn thêm một add_action
hook / callback để xác thực bài đăng mới và nếu nó đã tồn tại, hãy hủy bài đăng hoặc chuyển nó vào thùng rác hoặc một cái gì đó tương tự.
Tôi đã tìm thấy xmlrpc_prepare_post
nhưng tôi không nghĩ rằng tôi có thể hủy bỏ nó từ đó. Trừ khi tôi có thể cập nhật một số thuộc tính và đặt nó vào thùng rác?
Cập nhật.
Tôi đã thử những điều sau đây và nó chỉ được đưa vào xmlrpc_call, nhưng chưa bao giờ bên trong xmlrpc_wp_insert_post_meta. Tôi thậm chí đã thêm một cuộc gọi add_filter được mã hóa cứng (không chỉ trong trường hợp nếu newPost) và nhật ký của tôi không bao giờ hiển thị thông báo ghi nhật ký như vậy.
Đây là mã:
function hueman_xmlrpc_call( $method )
{
error_log("XMLRPC | hueman_xmlrpc_call Method = $method \n" , 3, '/home/.../debug.log');
if( 'wp.newPost' === $method || 'metaWeblog.newPost' === $method )
{
error_log("XMLRPC | hueman_xmlrpc_call method = " . $method . " \n" , 3, '/home/.../debug.log');
add_filter( 'xmlrpc_wp_insert_post_data', 'hueman_xmlrpc_wp_insert_post_data' );
}
}
add_action('xmlrpc_call', 'hueman_xmlrpc_call', 1 );
add_filter( 'xmlrpc_wp_insert_post_data', 'hueman_xmlrpc_wp_insert_post_data' );
function hueman_xmlrpc_wp_insert_post_data( $post_data )
{
error_log("XMLRPC | hueman_xmlrpc_wp_insert_post_data \n" , 3, '/home/.../debug.log');
// Check if the post title exists:
$tmp = get_page_by_title(
$post_data['post_title'],
OBJECT,
$post_data['post_type']
);
if( is_object ( $tmp ) )
{
// Go from 'insert' to 'update' mode within wp_insert_post():
//$post_data['ID'] = $tmp->ID;
$post_data['post_status'] = 'trash';
error_log("XMLRPC | hueman_xmlrpc_wp_insert_post_data I TRASHED IT! \n" , 3, '/home/.../debug.log');
}
return $post_data;
}
Trong nhật ký, tôi có loại báo cáo nhật ký này:
XMLRPC | hueman_xmlrpc_call Method = mt.supportedMethods
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.getRecentPosts
XMLRPC | hueman_xmlrpc_call Method = mt.supportedMethods
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.getRecentPosts
XMLRPC | hueman_xmlrpc_call Method = mt.supportedMethods
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.getRecentPosts
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.getCategories
XMLRPC | hueman_xmlrpc_call Method = metaWeblog.newPost
XMLRPC | hueman_xmlrpc_call method = metaWeblog.newPost
Sau đó, tôi thấy các bộ lọc khác mà tôi đã thêm khi một bài viết được tạo. Tôi biết có lẽ cuối cùng tôi sẽ sửa các bài viết ở đó nhưng tôi chắc chắn rằng các bộ lọc / hành động XMLRPC này sẽ hoạt động.
Từ nhật ký, tôi thấy nó đi vào bên trong if newPost và thêm bộ lọc 'xmlrpc_wp_insert_post_data' nhưng nó không bao giờ thực thi hàm hueman_xmlrpc_wp_insert_post_data ... :(