web-dev-qa-db-ja.com

プログラムによる投稿の追加

新しいカスタム投稿を挿入するパーサーを作成しようとしています。とても簡単です

global $user_ID;
$new_post = array(
    'post_title' => 'My New Post',
    'post_content' => 'Lorem ipsum dolor sit amet...',
    'post_status' => 'publish',
    'post_date' => date('Y-m-d H:i:s'),
    'post_author' => $user_ID,
    'post_type' => 'post',
    'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);

しかし、私はパーマリンクを作成する際にいくつかの追加のロジックを持っています。

function my_post_type_link_filter_function( $post_link, $id = 0, $leavename = FALSE ) {
    if ( strpos('%dgor%', $post_link) === 'FALSE' && strpos('%znak%', $post_link) === 'FALSE' ) {
        return $post_link;
    }
    $post = get_post($id);
    if ( !is_object($post) || $post->post_type != 'goroskop' ) {
        return $post_link;
    }
    $day = wp_get_object_terms($post->ID, 'gday');
    $month = wp_get_object_terms($post->ID, 'gmonth');
    $year = wp_get_object_terms($post->ID, 'gyear');
    if (  !$day || !$month || !$year ) {
        return $post_link;
    }
    $post_link = str_replace('%gday%', $day[0]->slug, $post_link);
    $post_link = str_replace('%gmonth%', $month[0]->slug, $post_link);
    return str_replace('%gyear%', $year[0]->slug, $post_link);
}
add_filter('post_type_link', 'my_post_type_link_filter_function', 1, 3);

だから、私はカスタム分類法に基づいて私のパーマリンク構造内のいくつかのマーカーを置き換える必要があります。

問題は次のとおりです。新しいカスタム投稿を挿入するときにプログラムでこのロジックを呼び出す方法はありますか?

2
Anton Abramov
add_action( 'publish_post', 'run_when_post_published_first_time',10,2 );
function run_when_post_published_first_time($post_id, $post)
{
// Checks whether is post updated or published at first time.
if ($post->post_date != $post->post_modified) return;

// Place here your code
}

from http://wordpress.org/support/topic/new-post-hook

1
Mubbashar