Wordpress 在自定义帖子类型的插件中删除带有wp_delete_帖子的内容
我设置了一个插件,添加了一个自定义帖子类型,然后在激活时引入了一堆带有wp_insert_post的虚拟内容,如下所示:Wordpress 在自定义帖子类型的插件中删除带有wp_delete_帖子的内容,wordpress,custom-post-type,dummy-data,Wordpress,Custom Post Type,Dummy Data,我设置了一个插件,添加了一个自定义帖子类型,然后在激活时引入了一堆带有wp_insert_post的虚拟内容,如下所示: register_activation_hook( __FILE__, array( $this, 'activate' ) ); public function activate( $network_wide ) { include 'dummycontent.php'; foreach ($add_posts_array as $p
register_activation_hook( __FILE__, array( $this, 'activate' ) );
public function activate( $network_wide ) {
include 'dummycontent.php';
foreach ($add_posts_array as $post){
wp_insert_post( $post );
};
} // end activate
我想在插件停用时删除此内容,因此我设置了此功能:
register_deactivation_hook( __FILE__, array( $this, 'deactivate' ) );
public function deactivate( $network_wide ) {
include 'dummycontent.php';
foreach($remove_posts_array as $array){
$page_name = $array["post_title"];
global $wpdb;
$page_name_id = $wpdb->get_results("SELECT ID FROM " . $wpdb->base_prefix . "posts WHERE post_title = '". $page_name ."'");
foreach($page_name_id as $page_name_id){
$page_name_id = $page_name_id->ID;
wp_delete_post( $page_name_id, true );
};
};
} // end deactivate
它很好用。除了因为自定义帖子类型是使用运行这两个函数的相同插件创建的,帖子类型在帖子本身可以通过wp\u delete\u post
之前被删除。当我在没有自定义post类型的情况下测试这些功能时,post会在激活时添加,在停用时删除。所以我知道问题在于帖子类型。有人知道如何解决这个问题吗?试试这样的方法(YOUTPOSTTYPE是您的帖子类型的名称):
它在我的插件中起作用,应该在你的插件中起作用。(这已经用WordPress 3.5.1进行了测试)。尝试类似的方法(YOUTPOSTTYPE是您的帖子类型的名称):
它在我的插件中起作用,应该在你的插件中起作用。(这已经用WordPress 3.5.1进行了测试)。
wp\u delete\u post($ID,false)
将其发送到垃圾箱。只有当您从垃圾箱中删除后,邮件才会真正被删除。这就是它与$force=true
一起工作的原因
因此,它的工作正如预期的那样。首先,帖子被扔进垃圾桶,然后被删除。比如回收站。跟踪post_状态
更改,查看它何时到达垃圾箱,然后再做任何事情。否则等待删除
<强>也删除内容,而不是停用。<强>考虑暂停插件,当你真的想要它时卸载它。
< P> < >代码> WpDeleTeEtPoST($ID,false)< /代码>将其发送到垃圾。< /强>只有当你从垃圾中删除时,帖子才被删除。这就是它与$force=true
一起工作的原因
因此,它的工作正如预期的那样。首先,帖子被扔进垃圾桶,然后被删除。比如回收站。跟踪post_状态
更改,查看它何时到达垃圾箱,然后再做任何事情。否则等待删除
<强>也删除内容,而不是停用。< /强>考虑停用插件,当你真的想要它时卸载它。
试试这个函数function deactivate () {
$args = array(
'post_type' => 'POST_TYPE',
'posts_per_page' => - 1
);
if ( $posts = get_posts( $args ) ) {
foreach ( $posts as $post ) {
wp_delete_post( $post->ID, true );
}
}
}
试试这个功能
function deactivate () {
$args = array(
'post_type' => 'POST_TYPE',
'posts_per_page' => - 1
);
if ( $posts = get_posts( $args ) ) {
foreach ( $posts as $post ) {
wp_delete_post( $post->ID, true );
}
}
}
明亮的很好,太棒了!工作完美。