我正在尝试停用插件后删除页面。该代码不适用于删除页面。
register_activation_hook( __FILE__, 'insert_page' );
function insert_page(){
// Create post object
$my_post = array(
'post_title' => 'Menu',
'post_content' => 'Short Code',
'post_status' => 'publish',
'post_author' => get_current_user_id(),
'post_type' => 'page',
);
// Insert the post into the database
wp_insert_post( $my_post, '' );
$newvalue = wp_insert_post( $post, false );
update_option( 'Menu', $newvalue );
}
register_deactivation_hook( __FILE__, 'deactivate_plugin' );
function deactivate_plugin() {
$page = get_page_by_title('Menu');
wp_delete_post($page);
}
我什至尝试了wp_delete_post($page, true);
。它也不起作用。在我错的地方帮我。
答案 0 :(得分:0)
如果您不介意,我将解决一些问题:
首先,您应该进行代码缩进/格式化。 未来,谢谢!
第二次您两次调用wp_insert_post()
函数,但仅工作一次。您还可以在调用update_option()
之前检查wp_insert_post()
是否返回真实值。
第三,小心“通用”函数名,因为这样可能会导致重新声明错误!尝试使用namespaces,classes或至少使用函数名作为前缀,以免将来出现麻烦。
第四,您无需在$error
上将false
参数设置为wp_insert_post()
,因为它是默认值。
最后,要回答您的问题(最终!),因为wp_delete_post()
需要一个帖子 ID ,并且您正在传递一个帖子 Object ,它不起作用。相反,您将要使用$page->ID
。这是您上面概述的更改的代码:
register_activation_hook( __FILE__, 'so_50960355_insert_page' );
function so_50960355_insert_page(){
// Define my page arguments
$page = array(
'post_title' => 'Menu',
'post_content' => 'Short Code',
'post_status' => 'publish',
'post_author' => get_current_user_id(),
'post_type' => 'page',
);
if( $page_id = wp_insert_post( $page ) ){
// Only update this option if `wp_insert_post()` was successful
update_option( 'my_menu_page_id', $page_id );
}
}
register_deactivation_hook( __FILE__, 'so_50960355_delete_page' );
function so_50960355_delete_page(){
$page_id = intval( get_option( 'my_menu_page_id' ) );
// Force delete this so the Title/slug "Menu" can be used again.
wp_delete_post( $page_id, true );
}