web-dev-qa-db-ja.com

投稿を挿入しながらユニークなスラグを生成

新しい投稿を挿入しながらどのように私はユニークなスラグを作成することができます..

私は私が投稿を照会し、ユニークなスラッグを作成するためにレコードを比較することができることを知っていますが

私は同時に独特のスラグのポストを挿入したいです。

私は投稿のタイトルとその投稿に必要なデータを持っていて、wpqueryでそれを挿入したいとしましょう。

私はstと投稿を挿入するとき。好き

$my_post = array(
  'post_title'    => 'My post',
  'post_content'  => 'This is my post.',
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => array(8,39)
);

// Insert the post into the database
wp_insert_post( $my_post );

スラグを自動的に処理します。

この投稿を挿入して、挿入後にphpリダイレクトで開きます。

2
kutlus

あなたはそれについて考える必要はありません - WordPressがこれを引き受けます。

wp_insert_postソースコード ...を見てみましょう。

3203 行目にはあります。

if ( empty($post_name) ) {
    if ( !in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) ) {
        $post_name = sanitize_title($post_title);
    } else {
        $post_name = '';
    }
} else {
    // On updates, we need to check to see if it's using the old, fixed sanitization context.
    $check_name = sanitize_title( $post_name, '', 'old-save' );
    if ( $update && strtolower( urlencode( $post_name ) ) == $check_name && get_post_field( 'post_name', $post_ID ) == $check_name ) {
        $post_name = $check_name;
    } else { // new post, or slug has changed.
        $post_name = sanitize_title($post_name);
    }
}

そのため、post_nameが設定されていない場合、WPはpost_titleから生成します。

それから 3325 の行に:

   $post_name = wp_unique_post_slug( $post_name, $post_ID, $post_status, $post_type, $post_parent );

そのため、WPはpost_nameの一意性を考慮します。

2

WordPressは独特のナメクジを世話します。投稿の作成後に投稿にリダイレクトしたい場合は、投稿が成功した場合にwp_insert_poost()によって返される投稿IDを使用してパーマリンクを取得できます。

$my_post = array(
  'post_title'    => 'My post',
  'post_content'  => 'This is my post.',
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => array(8,39)
);

// Insert the post into the database
$post_id = wp_insert_post( $my_post );

// Check there was no errors
if( $post_id && ! is_wp_error( $post_id ) ) {

    wp_redirect( get_the_permalink( $post_id ) );
    exit;

}
1
cybmeta