我在类方法中使用常规wordpress函数时遇到了一些麻烦 我像这样保存post meta,它的工作正常:
public function saveMetadata( $postname ) {
$post_id = $_POST[ 'post_ID' ];
$post_holder = $_POST[ $postname ];
update_post_meta( $post_id, $postname, $post_holder );
}
但是当我尝试更新meta使用相同的方法时,它不起作用!为什么呢?
多数民众赞成我调用此
//creation and run object
add_action( 'save_post', $quality->saveMetadata( 'project_quality' ) );
答案 0 :(得分:0)
尝试添加优先级
add_action( 'save_post', $quality->saveMetadata( 'project_quality' ), 999 );
另外,尝试检查数据库表wp_postmeta以验证是否存在project_quality
我对update_post_meta函数有同样的问题,但由于Yoast SEO Field优先级,我无法弄清楚
这可能会有所帮助
答案 1 :(得分:0)
所以,最后我通过在action中使用了无数函数来解决这个问题,并在其中发送变量$ post_id。 看起来,wordpress exxt exacly来自这个var,奇怪但是它有效。代码如下:
public function saveMetadata() {
add_action('save_post', function($post_id){
if(isset($_POST[$this->id])) {
update_post_meta( $post_id, $this->id, $_POST[ $this->id] );
}
});
}
注意:未经任何验证。
并调用它,ofc:
//object creation and run
$someObject->saveMetadata();
答案 2 :(得分:0)
我有类似的问题,我尝试用WP AJAX在我的类函数中更新一个订单的post meta,但是get_post_meta()工作,更新没有,所以我用删除实际元解决了它并再次添加新数据,简短示例:
public function order_decision_ajax_callback()
{
$current_custom_postmeta = get_post_meta($orderID, 'custompostmeta', true);
if($current_custom_postmeta)
{
delete_post_meta($orderID, 'custompostmeta');
}
add_post_meta($orderID, 'custompostmeta', $newmeta);
}