Support » Allgemeine Fragen » Erstellung mehrerer Seiten bei Plugin Aktivierung

  • Gelöst endlessone

    (@endlessone)


    Hallo liebe Community,

    ich erstelle gerade ein Plugin, und möchte gerne bei der Aktivierung mehrere Seiten automatisch erstellen lassen.

    Wie ich das ganze für eine einzelne Seite hin bekomm, habe ich schon raus gefunden:

    class Example_Activator{
    
        public static function activate(){
    
            if (!current_user_can('activate_plugins')) return;
    
            global $wp_database;
    
            if (null === $wp_database->get_row("SELECT post_name FROM {$wp_database->prefix}posts WHERE post_name = 'new-page-slug'", 'ARRAY_A')) {
    
                $current_user = wp_get_current_user();
    
                $page = array(
                    'post_title' => __('New Page'),
                    'post_status' => 'publish',
                    'post_author' => $current_user->ID,
                    'post_type' => 'page',
                    'post_content' => '[shortcode]',
                );
    
                wp_insert_post($page);
            }
        }
    }

    Mir ist aber nicht ganz klar wie ich es nun hinbekomme das beispielsweise zwei oder drei Seiten angelegt werden.

    Ich würde mich sehr darüber freuen, wenn mir jemand Hilfestellung geben könnte.

    Viele Grüße
    Marcel

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Mit einer Schleife in dem Script?!

    Moderator Bego Mario Garde

    (@pixolin)

    Statt der direkten Abfrage in der Datenbank kannst du auch die Funktion verwenden, die dir WordPress zur Verfügung stellt, z.B.

    $page = get_page_by_title( 'New Page' );

    Um mehrere Webseiten zu erstellen, kannst du entweder die Abfrage ob die Seite bereits existiert und das Einfügen der neuen Seite wiederholen oder ein (assoziatives) Array mit einer foreach()-Schleife verwenden. Ein vereinfachtes Beispiel:

    add_action( 'wp_footer', 'seite_erstellen' ); 
    function seite_erstellen() {
    	$titles = array( "New Page", "Another Page" );
    	foreach($titles as $title) {
    		$page = get_page_by_title( $title );
    		if(! isset( $page )) {
    			$my_post = array(
    				'post_title'    => $title,
    				'post_content'  => 'was auch immer',
    				'post_status'   => 'publish',
    				'post_author'   => get_current_user_id(),
    				'post_type'     => 'page',
    			);// Insert the post into the database.
    			$post_id = wp_insert_post( $my_post, $wp_error );
    			echo $post_id . '<br>';
    		} 
    	}
    }

    Mit Fragen zur Programmierung bist du grundsätzlich bei Stackexchange besser aufgehoben, während wir hier gerne Anwendungssupport geben.

    Thread-Ersteller endlessone

    (@endlessone)

    @pixolin vielen Dank für deine Hilfe, dass hat mir schon sehr weitergeholfen. Werde mich zukünftig bei Stackexchange informieren.

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)