Best way to save postmeta

时间:2016-03-16 作者:Tom Usborne

我只是想知道拯救Posteta的最好方法是什么。

我不希望空的Posteta值阻塞数据库。

我已经在我的插件中保存了Posteta,它添加了空值,所以我想在人们重新保存帖子时清除这些值。

对这样做有什么意见吗?改进?:

if ( isset( $_POST[ \'_my_meta_key\' ] ) && $_POST[ \'_my_meta_key\' ] !== \'\' ) {
    update_post_meta( $post_id, \'_my_meta_key\', $_POST[ \'_my_meta_key\' ] );
} else {
    delete_post_meta( $post_id, \'_my_meta_key\' );
}

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

你的方法很好,你应该对数据进行基本检查。否则,您可能会得到一个数组或序列化对象……这可能会导致意外的后果(包括安全问题!)当您或其他人试图打印值时。

也许这样更容易:

$key   = \'_my_meta_key\';
$value = filter_input( INPUT_POST, $key, FILTER_SANITIZE_STRING );

if ( $value )
    update_post_meta( $post_id, $key, $value );
else
    delete_post_meta( $post_id, $key );
请注意,应该避免多次写入键字符串。如果你想更改它的名称,你应该尽可能少的地方来搜索它。理想情况下,整个代码库中只有一个。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在