0

wordpressの「Jobs」カスタム投稿が公開されるたびに、次の機能を実行しようとしています。このコードは、テーマ テンプレートに配置すると機能しますが (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

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 に答える