0

每当发布 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');
4

2 回答 2

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

于 2012-05-04T05:45:27.257 回答
0

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

于 2012-05-04T05:03:46.093 回答