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" );
}
上述方法可行,但它只是清除了这些值。我是否使用的是错误的?我是不是偶然错过了什么?
最合适的回答,由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和安全风险。
注意:我没有足够的声誉发表评论,所以请给出此消息作为回答。