AlexU писал: |
Если все посты нужно удалить и есть доступ к phpMyAdmin.
Очищаешь wp_posts(посты) и wp_categories(категории). |
gleoz писал: |
+1 за удалить из мускула |
Skat писал: |
+1 за очистеть через phpmyadmin, делов на пару минут от силы
|
TC, не слушай их, ибо это неправильно. Кроме самих постов, имеется еще и метадата, сохраненная в другой таблице (postmeta), есть камменты, ассоциированные с постом и т.д. Короче, удалять надо
ТОЛЬКО через wp_delete_post(), если ты не хочешь оставить в базе тонну шлака. Эта функция удалит как сами посты, так и все, что с ними связано.
Напрямую через мускуль лучше ничего не делать. Просто посмотри на то, как работатет эта функция и ты поймешь, почему удаление из базы постов вручную не есть хорошая идея:
/**
* wp_delete_post() - Deletes a Post
*
* {@internal Missing Long Description}}
*
* @package WordPress
* @subpackage Post
* @since 1.0.0
*
* @param int $postid post ID
* @return mixed {@internal Missing Description}}
*/
function wp_delete_post($postid = 0) {
global $wpdb, $wp_rewrite;
if ( !$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $postid)) )
return $post;
if ( 'attachment' == $post->post_type )
return wp_delete_attachment($postid);
do_action('delete_post', $postid);
/** @todo delete for pluggable post taxonomies too */
wp_delete_object_term_relationships($postid, array('category', 'post_tag'));
$parent_data = array( 'post_parent' => $post->post_parent );
$parent_where = array( 'post_parent' => $postid );
if ( 'page' == $post->post_type) {
// if the page is defined in option page_on_front or post_for_posts,
// adjust the corresponding options
if ( get_option('page_on_front') == $postid ) {
update_option('show_on_front', 'posts');
delete_option('page_on_front');
}
if ( get_option('page_for_posts') == $postid ) {
delete_option('page_for_posts');
}
// Point children of this page to its parent, also clean the cache of affected children
$children_query = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_parent = %d AND post_type='page'", $postid);
$children = $wpdb->get_results($children_query);
$wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'page' ) );
}
// Do raw query. wp_get_post_revisions() is filtered
$revision_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'revision'", $postid ) );
// Use wp_delete_post (via wp_delete_post_revision) again. Ensures any meta/misplaced data gets cleaned up.
foreach ( $revision_ids as $revision_id )
wp_delete_post_revision( $revision_id );
// Point all attachments to this post up one level
$wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'attachment' ) );
$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $postid ));
$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d", $postid ));
if ( 'page' == $post->post_type ) {
clean_page_cache($postid);
foreach ( (array) $children as $child )
clean_page_cache($child->ID);
$wp_rewrite->flush_rules();
} else {
clean_post_cache($postid);
}
do_action('deleted_post', $postid);
return $post;
}