2014-10-29 109 views
0

我有类方法的一些麻烦,经常WordPress的功能 我保存后的元这样的及其工作正常:update_post_meta不仅工作的时候保存数据,而不是更新

public function saveMetadata($postname) { 
    $post_id  = $_POST[ 'post_ID' ]; 
    $post_holder = $_POST[ $postname ]; 

    update_post_meta($post_id, $postname, $post_holder); 

} 

但是当我尝试更新元使用相同的方法,它不起作用!为什么?

,这是我调用此

//creation and run object 
add_action('save_post', $quality->saveMetadata('project_quality')); 
+0

您的代码没有任何错误检查,也没有透露你迄今试图找出更多。您发布的代码*绝对不能*更新任何后期元。它可以,但不一定。所以你必须说明为什么你认为它必须。 – hakre 2014-10-29 21:18:29

+0

in var_dump all values isset,但update_post_meta does not保存它,他的作品仅用于第一次保存,然后我无法更新meta – WebArtisan 2014-10-29 21:27:06

+0

重要的是您使用正确的post_ID,请参阅http://codex.wordpress.org/Function_Reference/update_post_meta – hakre 2014-10-29 21:34:30

回答

0

所以,最后我通过内部行动anonimous功能解决了这个,并发送里面变量$ POST_ID。 看来,wordpress exxt从这个var exacly,奇怪,但它的作品。这里代码:

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(); 
0

尝试增加优先

add_action('save_post', $quality->saveMetadata('project_quality'), 999);

也尝试检查数据库表wp_postmeta,以验证是否有project_quality

我有相同与update_post_meta功能问题,但它因为Yoast搜索引擎优化领域的优先事项,我不明白

这可能有助于

update_post_meta for Wordpress Yoast SEO

+0

很奇怪。如果我做var_dump($ _ post);出口; - 我得到了一个帖子,但如果没有退出 - 帖子是空的,完全 – WebArtisan 2014-10-30 00:10:00

0

我有类似的问题,我想在WP AJAX我的类函数来更新订单的交元,但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); 
} 
相关问题