Ich erstelle ein Plugin, in dem ich eine dynamische Seite erstellen und ihr eine Vorlage zuweisen muss. Ich habe es mit dem folgenden Code erstellt:
function gallerypage() { global $wpdb; $check_page = $wpdb->get_row( "SELECT * FROM wp_posts WHERE post_name = 'archive-gallery'" ); if ( ! $check_page ) { $page_time = the_time( 'Ymd g:i:s' ); $gallery_page = array( 'post_title' => 'Archive Gallery', 'post_content' => 'This page is dedicated to the archive gallery. and it is used to show all the gallerys', 'post_status' => 'publish', 'post_type' => 'page', 'post_author' => 1, 'post_slug' => 'archive-gallery', 'post_date' => $page_time ); //$wpdb->update($wpdb->prefix.'pn_options', array('option_value'=>$post_id), array('id'=>'10')); $p_ID = wp_insert_post( $gallery_page ); update_post_meta( $p_ID, "_wp_page_template", "archivegallery.php" ); } } add_action( 'init', 'gallerypage' );
Das Problem ist, wenn ich das Plugin aktiviere, erstellt die Seite immer wieder, wie Börsen-Updates. Was mache ich falsch?
Wenn kein Ergebnis gefunden wird, gibt $wpdb->get_row
NULL
nicht false
https://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row
Sie verwenden add_action('init', 'gallerypage');
So läuft es bei jeder Ladung. Sie sollten register_activation_hook
so dass es nur ausgeführt wird, wenn das Plugin aktiviert ist. https://codex.wordpress.org/Function_Reference/register_activation_hook
Versuchen Sie es mit get_page_by_path()
, ob die Seite bereits existiert. Dann müssen Sie nicht die globalen und benutzerdefinierten $wpdb
SQL verwenden. https://codex.wordpress.org/Function_Reference/get_page_by_path