Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




bulk_edit_posts [ WordPress Function ]

bulk_edit_posts ( $post_data = null )
Parameters:
  • (array) $post_data Optional, the array of post data to process if not provided will use $_POST superglobal.
Returns:
  • (array)
Defined at:



Process the post data for the bulk editing of posts.

Updates all bulk edited posts/pages, adding (but not removing) tags and categories. Skips pages when they would be their own parent or child.

Source


<?php
function bulk_edit_posts$post_data null ) {
    global 
$wpdb;

    if ( empty(
$post_data) )
        
$post_data = &$_POST;

    if ( isset(
$post_data['post_type']) )
        
$ptype get_post_type_object($post_data['post_type']);
    else
        
$ptype get_post_type_object('post');

    if ( !
current_user_can$ptype->cap->edit_posts ) ) {
        if ( 
'page' == $ptype->name )
            
wp_die__('You are not allowed to edit pages.'));
        else
            
wp_die__('You are not allowed to edit posts.'));
    }

    if ( -
== $post_data['_status'] ) {
        
$post_data['post_status'] = null;
        unset(
$post_data['post_status']);
    } else {
        
$post_data['post_status'] = $post_data['_status'];
    }
    unset(
$post_data['_status']);

    
$post_IDs array_map'intval', (array) $post_data['post'] );

    
$reset = array( 'post_author''post_status''post_password''post_parent''page_template''comment_status''ping_status''keep_private''tax_input''post_category''sticky' );
    foreach ( 
$reset as $field ) {
        if ( isset(
$post_data[$field]) && ( '' == $post_data[$field] || -== $post_data[$field] ) )
            unset(
$post_data[$field]);
    }

    if ( isset(
$post_data['post_category']) ) {
        if ( 
is_array($post_data['post_category']) && ! empty($post_data['post_category']) )
            
$new_cats array_map'absint'$post_data['post_category'] );
        else
            unset(
$post_data['post_category']);
    }

    
$tax_input = array();
    if ( isset(
$post_data['tax_input'])) {
        foreach ( 
$post_data['tax_input'] as $tax_name => $terms ) {
            if ( empty(
$terms) )
                continue;
            if ( 
is_taxonomy_hierarchical$tax_name ) ) {
                
$tax_input$tax_name ] = array_map'absint'$terms );
            } else {
                
$comma _x',''tag delimiter' );
                if ( 
',' !== $comma )
                    
$terms str_replace$comma','$terms );
                
$tax_input$tax_name ] = explode','trim$terms" \n\t\r\0\x0B," ) );
            }
        }
    }

    if ( isset(
$post_data['post_parent']) && ($parent = (int) $post_data['post_parent']) ) {
        
$pages $wpdb->get_results("SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'page'");
        
$children = array();

        for ( 
$i 0$i 50 && $parent 0$i++ ) {
            
$children[] = $parent;

            foreach ( 
$pages as $page ) {
                if ( 
$page->ID == $parent ) {
                    
$parent $page->post_parent;
                    break;
                }
            }
        }
    }

    if ( isset( 
$post_data['post_format'] ) ) {
        if ( 
'0' == $post_data['post_format'] )
            
$post_data['post_format'] = false;
        
// don't change the post format if it's not supported or not '0' (standard)
        
elseif ( ! current_theme_supports'post-formats'$post_data['post_format'] ) )
            unset( 
$post_data['post_format'] );
    }

    
$updated $skipped $locked = array();
    foreach ( 
$post_IDs as $post_ID ) {
        
$post_type_object get_post_type_objectget_post_type$post_ID ) );

        if ( !isset( 
$post_type_object ) || ( isset($children) && in_array($post_ID$children) ) || !current_user_can$post_type_object->cap->edit_post$post_ID ) ) {
            
$skipped[] = $post_ID;
            continue;
        }

        if ( 
wp_check_post_lock$post_ID ) ) {
            
$locked[] = $post_ID;
            continue;
        }

        
$post get_post$post_ID );
        
$tax_names get_object_taxonomies$post );
        foreach ( 
$tax_names as $tax_name ) {
            
$taxonomy_obj get_taxonomy($tax_name);
            if ( isset( 
$tax_input[$tax_name]) && current_user_can$taxonomy_obj->cap->assign_terms ) )
                
$new_terms $tax_input[$tax_name];
            else
                
$new_terms = array();

            if ( 
$taxonomy_obj->hierarchical )
                
$current_terms = (array) wp_get_object_terms$post_ID$tax_name, array('fields' => 'ids') );
            else
                
$current_terms = (array) wp_get_object_terms$post_ID$tax_name, array('fields' => 'names') );

            
$post_data['tax_input'][$tax_name] = array_merge$current_terms$new_terms );
        }

        if ( isset(
$new_cats) && in_array'category'$tax_names ) ) {
            
$cats = (array) wp_get_post_categories($post_ID);
            
$post_data['post_category'] = array_uniquearray_merge($cats$new_cats) );
            unset( 
$post_data['tax_input']['category'] );
        }

        
$post_data['post_mime_type'] = $post->post_mime_type;
        
$post_data['guid'] = $post->guid;

        
$post_data['ID'] = $post_ID;
        
$updated[] = wp_update_post$post_data );

        if ( isset( 
$post_data['sticky'] ) && current_user_can$ptype->cap->edit_others_posts ) ) {
            if ( 
'sticky' == $post_data['sticky'] )
                
stick_post$post_ID );
            else
                
unstick_post$post_ID );
        }

        if ( isset( 
$post_data['post_format'] ) )
            
set_post_format$post_ID$post_data['post_format'] );
    }

    return array( 
'updated' => $updated'skipped' => $skipped'locked' => $locked );
}
?>

Examples [ wp-snippets.com ]

Top Google zoekresultaten

Meer ...

0 User Note(s)

Nog geen één. Wees de eerste!

Nieuw toevoegen ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics