WordPress删除文章函数:wp_delete_post

2016-10-16 wordpress函数
  • 文章介绍
  • 快速入门
  • 评价&建议

描述

wordpress 删除一篇文章,附件,或者页面。

当在文章或页面使用这个函数的时候,所有依赖这个文章或页面的内容也将被删除。包括评论,自定义字段,和文章与类别的关系

使用方法

  1. <?php wp_delete_post( $postid$force_delete ); ?>

参数

$postid

(整形)(可选) 文章 ID.

默认: 0

$force_delete

(布尔型) (可选) 是否绕过回收站箱直接删除 (在 WordPress 2.9 添加).

默认: false

返回值

混合型(mixed)

False on failure and a random wpdb object on success.

例子

删除文章

删除默认文章 “Hello World” 文章 ID 是 ‘1’.

  1. <?php wp_delete_post(1); ?>

源文件

wp_delete_post() 位于 wp-includes/post.php.

  1. /**
  2.  * Trashes or deletes a post or page.
  3.  *
  4.  * When the post and page is permanently deleted, everything that is tied to it is deleted also.
  5.  * This includes comments, post meta fields, and terms associated with the post.
  6.  *
  7.  * The post or page is moved to trash instead of permanently deleted unless trash is
  8.  * disabled, item is already in the trash, or $force_delete is true.
  9.  *
  10.  * @since 1.0.0
  11.  * @uses do_action() on 'delete_post' before deletion unless post type is 'attachment'.
  12.  * @uses do_action() on 'deleted_post' after deletion unless post type is 'attachment'.
  13.  * @uses wp_delete_attachment() if post type is 'attachment'.
  14.  * @uses wp_trash_post() if item should be trashed.
  15.  *
  16.  * @param int $postid Post ID.
  17.  * @param bool $force_delete Whether to bypass trash and force deletion. Defaults to false.
  18.  * @return mixed False on failure
  19.  */
  20. function wp_delete_post( $postid = 0, $force_delete = false ) {
  21.  global $wpdb$wp_rewrite;
  22.  if ( !$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d"$postid)) )
  23.   return $post;
  24.  if ( !$force_delete && ( $post->post_type == 'post' || $post->post_type == 'page') && get_post_status( $postid ) != 'trash' && EMPTY_TRASH_DAYS )
  25.    return wp_trash_post($postid);
  26.  if ( $post->post_type == 'attachment' )
  27.   return wp_delete_attachment( $postid$force_delete );
  28.  do_action('before_delete_post', $postid);
  29.  delete_post_meta($postid,'_wp_trash_meta_status');
  30.  delete_post_meta($postid,'_wp_trash_meta_time');
  31.  wp_delete_object_term_relationships($postid, get_object_taxonomies($post->post_type));
  32.  $parent_data = array( 'post_parent' => $post->post_parent );
  33.  $parent_where = array( 'post_parent' => $postid );
  34.  if ( 'page' == $post->post_type) {
  35.    // if the page is defined in option page_on_front or post_for_posts,
  36.   // adjust the corresponding options
  37.   if ( get_option('page_on_front') == $postid ) {
  38.    update_option('show_on_front', 'posts');
  39.    delete_option('page_on_front');
  40.   }
  41.   if ( get_option('page_for_posts') == $postid ) {
  42.    delete_option('page_for_posts');
  43.   }
  44.   // Point children of this page to its parent, also clean the cache of affected children
  45.   $children_query = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_parent = %d AND post_type='page'"$postid);
  46.   $children = $wpdb->get_results($children_query);
  47.   $wpdb->update( $wpdb->posts, $parent_data$parent_where + array( 'post_type' => 'page' ) );
  48.  } else {
  49.   unstick_post($postid);
  50.  }
  51.  // Do raw query.  wp_get_post_revisions() is filtered
  52.  $revision_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'revision'"$postid ) );
  53.  // Use wp_delete_post (via wp_delete_post_revision) again.  Ensures any meta/misplaced data gets cleaned up.
  54.  foreach ( $revision_ids as $revision_id )
  55.   wp_delete_post_revision( $revision_id );
  56.  // Point all attachments to this post up one level
  57.  $wpdb->update( $wpdb->posts, $parent_data$parent_where + array( 'post_type' => 'attachment' ) );
  58.  $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d"$postid ));
  59.  if ( ! emptyempty($comment_ids) ) {
  60.   do_action( 'delete_comment', $comment_ids );
  61.   foreach ( $comment_ids as $comment_id )
  62.    wp_delete_comment( $comment_id, true );
  63.   do_action( 'deleted_comment', $comment_ids );
  64.  }
  65.  $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d "$postid ));
  66.  if ( !emptyempty($post_meta_ids) ) {
  67.   do_action( 'delete_postmeta', $post_meta_ids );
  68.   $in_post_meta_ids = "'" . implode("', '"$post_meta_ids) . "'";
  69.   $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id IN($in_post_meta_ids)" );
  70.   do_action( 'deleted_postmeta', $post_meta_ids );
  71.  }
  72.  do_action( 'delete_post', $postid );
  73.  $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d"$postid ));
  74.  do_action( 'deleted_post', $postid );
  75.  if ( 'page' == $post->post_type ) {
  76.   clean_page_cache($postid);
  77.   foreach ( (array$children as $child )
  78.    clean_page_cache($child->ID);
  79.   $wp_rewrite->flush_rules(false);
  80.  } else {
  81.   clean_post_cache($postid);
  82.  }
  83.  wp_clear_scheduled_hook('publish_future_post', array$postid ) );
  84.  do_action('after_delete_post', $postid);
  85.  return $post;
  86. }
7 0

企业建站推荐正版商业主题,国内专业团队开发,完善售后,是您不二选择。

正版主题商店

主题猫WP建站,累计帮助1300+客户成功建站,为站长提供支持!

立刻开启你的建站之旅
QQ在线客服

服务热线

wordpress建站咨询