【WordPress】get_postsでスラッグ名を指定する場合

引っかかったので備忘録です。
記事一覧などでよく使われるget_postsについてです。

プログラムでWordPressに記事を自動投稿しようとしていました。
具体的にはget_postsで投稿記事の有無を判定し、存在していなければwp_insert_postで記事の登録、存在していればwp_update_postで記事の更新という感じのプログラムを書いていました。

投稿記事の有無を判定するために、get_postsの条件にスラッグ名を使ったのですが、何故か私の想定する結果が返ってきません。(常に該当記事が存在する判定になってしまいます)

いろいろ悩んだ結果、原因がわかりました。
結論から申しますと、get_postsに与えるスラッグのキーが誤っていました。
私はキー名をpost_nameにしていたのですが、正しくは単にnameです。
wp_insert_postやwp_update_postの場合は、スラッグのキーはpost_nameなので、混同していました。繰り返しになりますが、get_postsのスラッグのキーはnameです。

get_postsのサンプル
//レコード存在チェック
$args = array(
    'post_type' => 'post',
    'name' => $slug //≠post_name
);
if ( $posts = get_posts( $args ) ) {
    return $posts[0]->ID;
}

以上、備忘録です。

コメントを残す

メールアドレスが公開されることはありません。