要防止在运行 "wp_insert_post" 之前检查帖子标题是否存在来防止重复发帖,您可以使用以下方法:
get_page_by_title
函数检查帖子标题是否存在:在调用 wp_insert_post
函数之前,您可以使用 get_page_by_title
函数检查帖子标题是否已经存在。如果存在,则不调用 wp_insert_post
函数。
$title = '帖子标题';
$existing_post = get_page_by_title( $title, OBJECT, 'post' );
if ( ! $existing_post ) {
$post_id = wp_insert_post( array(
'post_title' => $title,
'post_content' => '帖子内容',
'post_status' => 'publish',
'post_type' => 'post',
) );
}
pre_get_posts
钩子:您可以使用 pre_get_posts
钩子来检查帖子标题是否存在。如果存在,则不调用 wp_insert_post
函数。
function check_duplicate_title( $query ) {
if ( $query->is_main_query() && $query->is_search ) {
$query->set( 'post_title', '帖子标题' );
}
}
add_action( 'pre_get_posts', 'check_duplicate_title' );
save_post
钩子:您可以使用 save_post
钩子来检查帖子标题是否存在。如果存在,则不保存帖子。
function check_duplicate_title_before_save( $post_id ) {
$title = get_the_title( $post_id );
$existing_post = get_page_by_title( $title, OBJECT, 'post' );
if ( $existing_post && $existing_post->ID != $post_id ) {
wp_delete_post( $post_id, true );
}
}
add_action( 'save_post', 'check_duplicate_title_before_save' );
这些方法可以帮助您在运行 wp_insert_post
之前检查帖子标题是否存在,从而防止重复发帖。
领取专属 10元无门槛券
手把手带您无忧上云