发布自定义帖子类型时在Wordpress中运行函数

时间:2012-05-04 01:30:33

标签: wordpress wordpress-plugin

我试图在wordpress“作业”自定义帖子发布的任何时候运行以下功能。当代码放在我的主题模板中时,代码可以工作(第2-7行),但只有在查看帖子时才会运行。我希望代码在帖子发布时运行,所以我尝试在我的functions.php中的函数中添加代码,但是每个自定义帖子发布时都没有发生任何事情。有什么建议吗?

function indeedgeo(){
    $indeedgeo = get_post_meta($post>ID, indeedgeo, true);
    $indeedgeos=explode(' ',$indeedgeo);
    $_jr_geo_latitude = $indeedgeos[0];
    $_jr_geo_longitude = $indeedgeos[1];
    update_post_meta($post->ID, _jr_geo_latitude, $_jr_geo_latitude);
    update_post_meta($post->ID, _jr_geo_longitude, $_jr_geo_longitude);
    }
add_action('publish_Jobs', 'indeedgeo');

2 个答案:

答案 0 :(得分:3)

你应该参与三个行动中的一个;

do_action('edit_post', $post_id, $post);
do_action('save_post', $post_id, $post);
do_action('wp_insert_post', $post_id, $post);

在保存帖子或更新其状态时运行。像下面这样的东西可以解决问题。

function se_10441543_save_post($post_id, $post){
    //determine post type
    if(get_post_type( $post_id ) == 'your_post_type'){
        //run your code
        $indeedgeo = get_post_meta($post_id, indeedgeo, true);
        $indeedgeos=explode(' ',$indeedgeo);
        $_jr_geo_latitude = $indeedgeos[0];
        $_jr_geo_longitude = $indeedgeos[1];
        update_post_meta($post_id, _jr_geo_latitude, $_jr_geo_latitude);
        update_post_meta($post_id, _jr_geo_longitude, $_jr_geo_longitude);
    }
}

add_action('save_post', 'se_10441543_save_post', 10, 2);

http://codex.wordpress.org/Plugin_API/Action_Reference

答案 1 :(得分:0)

不完全确定你的“publish_jobs”钩子是如何工作的,但是如果你将这个功能放在你的functions.php中,你需要给它上下文。将$post>ID替换为帖子编号(整数)。如果这适用于许多帖子,您可能希望使用另一种查询帖子数据的方法:http://codex.wordpress.org/Class_Reference/WP_Query。如果这有帮助,请告诉我。