如何永久删除帖子元条目?

时间:2015-11-05 作者:adamj

delete_post_meta 似乎只是清除了给定post元键的值。它实际上并没有完全删除该行。我已经挖掘了很多,但我似乎找不到任何可以完全删除post元条目的函数。

请问有人能给我指一下正确的方向吗?我必须使用$wpdb 要完全删除该行,还是有一个隐藏的函数可以为我执行此操作?

Edit:

以下内容已经过测试,并且正在运行,但正在使用$wpdb. 这是正确的方法吗?

$wpdb->delete( $wpdb->postmeta, array( \'post_id\' => 744, \'meta_key\' => \'referrers\' ), array( \'%d\', \'%s\' ) );

Edit2:

这是我的旧代码:

// $post_id contains an integer value
// $referrers contains an array
$referrers = get_post_meta( $post_id, \'referrers\', true );
for ( $i = 0; $i < count( $referrers ); $i++ ) {
    delete_post_meta( $post_id, "referrers_{$i}_contact_id" );
    delete_post_meta( $post_id, "_referrers_{$i}_contact_id" );
    delete_post_meta( $post_id, "referrers_{$i}_rule" );
    delete_post_meta( $post_id, "_referrers_{$i}_rule" );
    delete_post_meta( $post_id, "referrers_{$i}_amount" );
    delete_post_meta( $post_id, "_referrers_{$i}_amount" );
}
上述方法可行,但它只是清除了这些值。我是否使用的是错误的?我是不是偶然错过了什么?

1 个回复
最合适的回答,由SO网友:WPTC-Troop 整理而成

delete_post_meta will 删除元行。delete_post_meta 还使用wpdb 类删除元行。你能告诉我们完整的代码吗。

供您参考delete_post_meta 执行以下mysql命令

DELETE FROM wp_postmeta WHERE meta_id IN( "85" );
通过delete_metadata 作用meta\\u id 85只是出于示例目的而给出的。它是动态的。因此,您不需要运行自己的mysql查询来避免bug和安全风险。

注意:我没有足够的声誉发表评论,所以请给出此消息作为回答。

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?