• 解決済 shockatz

    (@shockatz)


    表記の内容について質問いたします。
    以下の内容でログインを行い、

    // Admin login
    $creds = [
    'user_login' => 'xxxxxx',
    'user_password' => 'xxxxxx',
    'remember' => true
    ];
    $admin = wp_signon( $creds, false );

    上記で問題なくユーザIDが取得できたことを確認して、

    $my_post = array(
    'post_title' => 'xxxxxx',
    'post_content' => 'xxxxx',
    'post_type' => 'xxxx',
    'post_status' => 'publish'
    );
    $post_id = wp_insert_post( $my_post );

    上記で正しくpost_idが帰ります。
    事実、まったく問題なく投稿はされているのですが、この投稿が先にログインしたユーザのものになっていません。
    (おそらく所有者なし状態)

    何かが足りないと思うのですが、ご指摘いただけましたら幸いです。

    • このトピックはshockatzが7年、 9ヶ月前に変更しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    wp_insert_post 関数の $post パラメーターの post_author フィールドで投稿者のユーザ ID を指定できるようです。

    例)

    $my_post = array(
    'post_author' => $admin->ID, // <-追加
    'post_title' => 'xxxxxx',
    'post_content' => 'xxxxx',
    'post_type' => 'xxxx',
    'post_status' => 'publish'
    );
    $post_id = wp_insert_post( $my_post );
    トピック投稿者 shockatz

    (@shockatz)

    をを!できました!
    ありがとうございます。

    Wordpress Codexには、
    ‘post_author’ => [ <ユーザー ID> ] // 作成者のユーザー ID。デフォルトはログイン中のユーザーの ID。
    とありました。自分は先の’wp_signon()’でログインしたものと思ってましたが、ログインできてないのですかね?

    すいません。直近の問題は解決しましたが、他の処理にもかかわることなので、ひきつづきよろしくお願いします!

    wp_signon 関数だけではカレントのユーザー情報($current_user や $user_ID)は設定されないようです。
    wp_set_current_user 関数などで設定する必要があるようです。

    例)

    $admin = wp_signon( $creds, false );
    if ( !is_wp_error( $admin ) )
    	wp_set_current_user( $admin->ID );
    トピック投稿者 shockatz

    (@shockatz)

    できました!
    おっしゃるとおり、wp_signonでは認証だけが行われ、ユーザ情報で別途セットしてあげなければいけないようです。
    「ユーザなし」で投稿されるという挙動が納得いかないのですが、まあそういうものかと。

    バッチリ投稿できました。本当にありがとうございます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「APIによるログインと投稿」には新たに返信することはできません。