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