Legen Sie die Seite so fest, dass sie bei Deaktivierung des Plugins entworfen wird

Ich arbeite an einem kleinen Plugin, das, wenn es aktiviert wird, eine Themaseite erstellt und dann eine function diese Seite veröffentlicht, das ist der Code, den ich veröffentlicht habe:

// function that creates the new ads page on plugin install // function mjj_create_page () { // Create new page object $ads_page = get_option('mjj_smart_ads_page'); $ads_new_page = array( 'post_title' => 'Smart Ads', 'post_content' => '', 'post_status' => 'publish', 'post_type' => 'page' ); // Insert the page into the database $ads_page = wp_insert_post( $ads_new_page ); update_option('mjj_smart_ads_page', $ads_page); // now lets give this new page a groovy template $ads_page_data = get_page_by_title('Smart Ads'); $ads_page_id = $ads_page_data->ID; update_post_meta($ads_page_id, '_wp_page_template','tpl-smart-ads.php'); } 

weiß nicht, ob seine semanticaly wp perfekt ist, aber es scheint ok zu funktionieren und tut was ich brauche, aber jetzt versuche ich eine funktion zu setzen, die auf plugin deaktivieren wird diese erstellte seite in den entwurfsstatus setzen, so dass es nicht im menü angezeigt wird, aber es einfach will scheinen zu spielen, heres was ich arbeite mit:

 // function that drafts smart ads page on plugin deactivate // function mjj_unpublish_page () { $old_ads_page = get_option('mjj_old_smart_ads_page'); $ads_old_page = array( 'post_title' => 'Smart Ads', 'post_content' => '', 'post_status' => 'draft', 'post_type' => 'page' ); // Insert the page into the database $old_ads_page = wp_update_post( $ads_old_page ); update_option('mjj_old_smart_ads_page', $old_ads_page); } 

und unten sind meine Haken

  // create the page to get the info for selling ads and posting ads register_activation_hook($file, array(&$this, 'mjj_create_page')); //while in this block i will also add the deactivate function to unpublish the created page register_deactivation_hook($file, array(&$this, 'mjj_unpublish_page')); 

Wie du sehen kannst, denke ich, dass die Einstellung auf Entwurf die Verwendung von wp_update_post beinhalten wird, aber es scheint nicht zu funktionieren, wenn es deaktiviert wird, und endet mit einer veröffentlichten Smart Ads Seite und einer im Entwurf

Solutions Collecting From Web of "Legen Sie die Seite so fest, dass sie bei Deaktivierung des Plugins entworfen wird"

Ich poste dies als eine andere Lösung für Sie und seine basierend auf der Seiten-ID

 /* $post_id - The ID of the post you'd like to change. $status - The post status publish|pending|draft|private|static|object|attachment|inherit|future|trash. */ function change_post_status($post_id,$status){ $current_post = get_post( $post_id, 'ARRAY_A' ); $current_post['post_status'] = $status; return wp_update_post($current_post); } 

Wenn Sie diese function einmal haben, können Sie sie mit der Seiten-ID der von Ihnen erstellten Seite verwenden:

 $ads_page = get_option('mjj_smart_ads_page'); $old_ads_page = change_post_status($ads_page,'draft'); update_option('mjj_old_smart_ads_page', $old_ads_page);