1

私は自分のサイトを開発しており、公開中に投稿者IDをその場で変更する必要があります。

すべての投稿は管理者によって作成および公開されますが、別の作成者によって提供されたコンテンツとして、投稿者IDを管理者から他の作成者に変更する必要があります(作成者IDはカスタムフィールドから取得されます)

だから、公開中にその場でこれを行う方法。

著者情報カスタムフィールドから取得する必要がありますか?これは、UIで手動で直接実行できるためです。

  • 投稿を作成するときに、表示オプションで「作成者」ブロックを有効にします

  • ドロップダウンメニューで作成者を変更します

これが私のテーマmetabox.phpコードです。wpalchemyメタボックススクリプトを使用しています。以下のコードは私のcptループphpファイルにあります。

// getting custom field value from image_artist
// this is giving value like artist_login_name / id
$png_gallery_meta->the_field('image_artist');
$artist_info = $png_gallery_meta->get_the_value();

// to separate artist_login_name and id
$string = $artist_info;
$artist = substr($string, 0, stripos($string, "/") );

// getting first name and last name from user id
$author_first_name = get_userdata(basename($string))->first_name;

$author_last_name = get_userdata(basename($string))->last_name;

したがって、上記のコードを使用して、カスタムフィールドのドロップダウン選択ボックスからユーザー情報を取得しています。管理者が投稿を公開しているときに、上記の値を使用してIDをオンザフライで変更するにはどうすればよいですか?投稿者IDは、選択ボックスから取得した上記のID値で変更する必要があります。私は今それがより明確になることを願っています。

4

2 に答える 2

1

著者情報カスタムフィールドから取得する必要がありますか?これは、UIで手動で直接実行できるためです。

  • 投稿を作成するときに、表示オプションで「作成者」ブロックを有効にします

  • ドロップダウンメニューで作成者を変更します

これが私のテーマmetabox.phpコードです。wpalchemyメタボックススクリプトを使用しています。以下のコードは私のcptループphpファイルにあります。

// getting custom field value from image_artist
// this is giving value like artist_login_name / id
$png_gallery_meta->the_field('image_artist');
$artist_info = $png_gallery_meta->get_the_value();

// to separate artist_login_name and id
$string = $artist_info;
$artist = substr($string, 0, stripos($string, "/") );

// getting first name and last name from user id
$author_first_name = get_userdata(basename($string))->first_name;

$author_last_name = get_userdata(basename($string))->last_name;

したがって、上記のコードを使用して、カスタムフィールドのドロップダウン選択ボックスからユーザー情報を取得しています。管理者が投稿を公開しているときに、上記の値を使用してIDをオンザフライで変更するにはどうすればよいですか?投稿者IDは、選択ボックスから取得した上記のID値で変更する必要があります。私は今それがより明確になることを願っています。

于 2012-08-04T20:38:15.303 に答える
1
$post_id = $post->ID; // change this to whathever
$user_id = '4'; // change this too

$the_post = array();
$the_post['ID'] = $post_id;
$the_post['post_author'] = $user_id;

wp_insert_post( $the_post );

上記のコードは、現在ループしている投稿を($ post-> ID経由で)IDが4の作成者で更新します。

wp_insert_postがどのように機能するかをここで読んでください。基本的に、すでに存在する投稿のIDを渡すと、渡した新しい情報でその投稿が更新されます。(この場合の作成者ID)

カスタムフィールドから物事を取得したい場合は、以下を使用できます。

$author = get_post_meta($this->ID, 'author_id', TRUE);

カスタムフィールドの詳細。

于 2012-08-04T21:28:39.790 に答える