首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress插件uninstall.php

Wordpress插件uninstall.php
EN

Stack Overflow用户
提问于 2014-08-08 08:04:25
回答 1查看 2.5K关注 0票数 0

我正在尝试编写一个简单的插件,其中包括创建一个定制的post类型。我一直在到处搜索,但我真的不知道如何编写卸载函数来删除自定义post类型及其从db中的所有条目。

我在WordPress的法典上找到了这个,但我不知道该怎么处理它。羞耻

代码语言:javascript
复制
if ( !defined( 'WP_UNINSTALL_PLUGIN' ) ) 
    exit();

$option_name = 'plugin_option_name';

delete_option( $option_name );

// For site options in multisite
delete_site_option( $option_name );  

//drop a custom db table
global $wpdb;
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mytable" );

有人能帮忙吗?

提前感谢

这是对的吗?

代码语言:javascript
复制
if ( !defined( 'WP_UNINSTALL_PLUGIN' ) ) 
    exit();

    global $wpdb;

    $posts_table = $wpdb->posts;

    $query = "
        DELETE FROM wp_posts 
        WHERE post_type = 'messages' 
    ";

$wpdb->query($query);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-09 03:29:37

WP代码页hook有两个重要的信息,其中只有一个你在你的问题。你确实需要确保你注册了钩子。

另外,如果您想删除所有定制的post数据(无论是在卸载时还是在另一个人的评论中,有一个单独的按钮来删除数据,就像许多插件一样),您也需要确保删除postmeta记录。

代码语言:javascript
复制
global $wpdb;
$cptName = 'messages';
$tablePostMeta = $wpdb->prefix . 'postmeta';
$tablePosts = $wpdb->prefix . 'posts';

$postMetaDeleteQuery = "DELETE FROM $tablePostMeta".
                      " WHERE post_id IN".
                      " (SELECT id FROM $tablePosts WHERE post_type='$cptName'";
$postDeleteQuery = "DELETE FROM $tablePosts WHERE post_type='$cptName'";

$wpdb->query($postMetaDeleteQuery);
$wpdb->query($postDeleteQuery);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25198700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档