web-dev-qa-db-fra.com

Créer un post pour chaque utilisateur?

Je me demandais s'il y avait un moyen de créer un post pour chaque utilisateur. Un peu comme une mise à jour en masse qui associerait certaines méta-utilisateurs à la publication créée.

Je préférerais exécuter un script en boucle qui passe par tous les utilisateurs et crée un post pour chacun en utilisant certaines méta-informations d'utilisateur.

Par exemple, si j'ai cinq utilisateurs pour lesquels je voudrais créer des publications. Les messages seraient intitulés en utilisant chacun de leurs noms complets.

Exemple de base:

Utilisateurs

johnny

jannie

bobbie

craig

mitch

Méta utilisateur

John Doe

Jane Doe

Bob Collins

Craig Matthews

Mitchell Humphries

Titres de publication:

John Doe

Jane Doe

Bob Collins

Craig Matthews

Mitchell Humphries

Cette demande est rare mais j'ai besoin d'une solution temporaire jusqu'à ce que je termine un plugin pour une recherche complète de l'utilisateur. Toute l'aide pouvant etre apportée serait très appréciée.

1
user1893

Créez ceci comme un plugin et activez-le. Il se désactive lui-même après avoir créé une page primaire pour les auteurs et des sous-pages pour chaque rôle Auteur + ou supérieur. À la fin, il se désactive.

Améliorez-le comme vous le souhaitez. Il utilise

// Hook activation to create new Author Pages
register_activation_hook(__FILE__, function(){
    // Create a Parent Page for all Author Pages
    if(!($parent = get_page_by_title('Authors'))){
        $parent = wp_insert_post(array(
            'post_type' => 'page',
            'post_title' => 'Authors',
            'post_content' => 'Authors are children of this page.',
            'post_status' => 'draft', // Or publish
        ));
    }
    if(!$parent){
        // Bad... ERROR!
        return;
    }
    // Get user IDs, get_users() returns too much data
    global $wpdb;
    $IDs = $wpdb->get_col("SELECT `ID` FROM {$wpdb->users} ORDER BY `user_registered` DESC;");
    // Loop IDs and create subpages for Authors+ (not Subscribers)
    foreach($IDs as $ID){
        // Get user
        $user = new WP_User($ID);
        // Only create pages for Authors!
        if(!$user->has_cap('edit_posts')) continue;
        // Create page for Author
        $title = "About Author: {$user->display_name}";
        if(!($child = get_page_by_title($title))){
            $child = wp_insert_post(array(
                'post_type' => 'page',
                'post_title' => $title,
                'post_name' => $user->display_name,
                'post_content' => 'Write stuff about the Author.',
                'post_status' => 'draft', // Or publish
                'post_parent' => $parent,
            ));
            // Setup according Metas (for further tracking)
            update_post_meta($child, 'about_author', $user->user_login);
            update_post_meta($child, 'about_author_ID', $user->ID);
        }
    }
    // Done! WILL RUN JUST ONCE, deactivates itself afterwards.
    deactivate_plugins(__FILE__, true);
    die;
});

C'est un peu une approche simpliste mais fera ce dont vous avez besoin. Il utilise un PHP 5.3 Fermeture. Envisagez de revenir à la compatibilité PHP 5.2 avec une affectation :)

Cordialement .

2
EarnestoDev