2017-02-27 87 views
0

我试图在屏幕上显示帖子的元数据中编辑字段。Wordpress挂钩在显示帖子编辑页面之前编辑帖子元数据

我一直在寻找'load-post.php'钩子,但这是在帖子加载前调用的(如果我已经正确理解),所以帖子id和元数据为空。 我试过其他的钩子,但是我一直无法完成这项工作。

下面的帖子元字段在编辑页面上显示之前需要进行更改。

$post_price = get_post_meta(get_the_ID(), 'price', TRUE);

例如:数据库中的价格= 10,但我希望它在价格= 15时显示在帖子编辑页面上。

任何链接,提示和想法,非常感谢。 :)

编辑:
我目前的解决方案:

add_action('load-post.php','calculate_price'); 
function calculate_price(){ 
    $post_id = $_GET['post']; 
    //get price from post by post_id and do stuff 
} 

这是正确的方法是什么?

回答

0

编辑:好吧我以为你只需要与邮编ID一起工作。如果您需要更改后对象(已从db加载并准备打印),则可以使用'the_post'代替。因为你只需要访问帖子ID,我会做这样的事情:

function my_the_post_action($post) { 
    $screen = get_current_screen(); 
    if(is_admin() && $screen->parent_base == 'edit' && get_post_type() == 'product') { 
     $post_id = $post->ID; 
     $price = (int) get_post_meta($post_id, 'price', true); 
     update_post_meta($post_id, 'price', $price + 5); 
    } 
} 
add_action('the_post', 'my_the_post_action'); 

这一部分:

get_post_type()== '产品'

是没有必要的,但是您应该确定要运行这段代码的帖子类型(基于帖子类型,类别,metafield等)。没有它,每次都会在管理查询中执行。此代码未经测试,如果出现错误,请随时举报。

+0

感谢您的回复,但是这个钩子不允许您更改查询吗?我不需要更改查询,我需要一个允许我从查询结果中更改数据的钩子。 – aboeka

+0

谢谢,看起来我的解决方案更好,但'the_post'似乎被忽略。有任何想法吗? add_action在类中的构造函数中。我非常喜欢钩子和wordpress。 – aboeka

+0

尝试在课程外的主题functions.php中使用此片段。那么如果什么都没有发生,把回声'作品';在my_the_post_action开始的时候确定没有事情发生。在管理区附近观看源代码,可能隐藏了'作品'。 – keyBeatz

相关问题