我希望让ADD_POST_META返回ID而不是TRUE或FALSE

时间:2014-02-26 作者:Warface

我想知道当我们使用add_post_meta() 作用

我需要它,以便使用ajax调用删除它。

有没有办法检索它,或者我必须查询数据库才能找到它?

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

根据法典,使用add_post_meta() 不能。该函数应该返回truefalse.

However, 该函数是一个简单的包装add_metadata()...

1726  function add_post_meta($post_id, $meta_key, $meta_value, $unique = false) {
1727          // make sure meta is added to the post, not a revision
1728          if ( $the_post = wp_is_post_revision($post_id) )
1729                  $post_id = $the_post;
1730  
1731          return add_metadata(\'post\', $post_id, $meta_key, $meta_value, $unique);
1732  }

https://core.trac.wordpress.org/browser/tags/3.8.1/src/wp-includes/post.php#L1726

... 和add_metadata() 返回行插入ID。

返回值

(布尔|整数)
返回false 发生故障时。一旦成功,returns the ID of the inserted row. 但是,请注意,返回值可能是add_{$meta_type}_metadata 滤器

http://codex.wordpress.org/Function_Reference/add_metadata

您也可以在源代码中看到:

73            $mid = (int) $wpdb->insert_id;
74    
75            wp_cache_delete($object_id, $meta_type . \'_meta\');
76    
77            do_action( "added_{$meta_type}_meta", $mid, $object_id, $meta_key, $_meta_value );
78    
79            return $mid;
80    }

https://core.trac.wordpress.org/browser/tags/3.8.1/src/wp-includes/meta.php#L31

鉴于这两个函数的源代码,我不知道如何add_post_meta() 可以返回boolean 当它只是将信息传递给并返回的输出时,add_metadata().

我只是快速测试了一下add_post_meta() 在纯本地测试服务器上的旧(3.6)安装上,我得到了ID,而不是truefalse. 如果您获得boolean 我怀疑这可能是“add_{$meta_type}_metadata 过滤“如文档中所述add_metadata()

问题也可能与AJAX的操作方式有关,但您没有发布任何与此相关的详细信息或代码。

SO网友:Rajeev Vyas

您不需要元表的id。有内置的wordpress函数来处理post meta。您可以使用get_post_meta 函数来获取它。使用delete_post_meta删除它。您还可以使用update_post_meta 如果要更新值。

结束

相关推荐