pythonでカスタムフィールドへ追加登録【WordPress】

ホームページ制作

pythonで投稿ページへの登録方法は以下の通り

payload = {"status": status,
                "slug": slug,
                "title": title,
                "content": content,
                #"date": datetime.now().isoformat(),
                "categories": category_ids,
                "tags": tag_ids}

    記事を投稿して成功した場合はTrue、失敗した場合はFalseを返します。
    #:param status: 記事の状態(公開:publish, 下書き:draft)
    #:param slug: 記事識別子。URLの一部になる(ex. slug=aaa-bbb/ccc -> https://wordpress-example.com/aaa-bbb/ccc)
    #:param title: 記事のタイトル
    #:param content: 記事の本文
    #:param category_ids: 記事に付与するカテゴリIDのリスト
    #:param tag_ids: 記事に付与するタグIDのリスト
    #:param media_id: 見出し画像のID
    #:return: レスポンス

アイキャッチ画像を登録するカスタムフィールドの登録もしたい。

pythonでカスタムフィールドへ追加登録方法

まず、function.phpファイルに以下を追加する。

//REST API の初期化フック
add_action( 'rest_api_init', 'create_api_posts_meta_field' );

function create_api_posts_meta_field() 
{
 	register_rest_field( 
		'post', //投稿タイプ
		'meta_field', //これは任意のキー名
		array(
 			'get_callback' => 'get_post_meta_for_api',
			'update_callback' => 'update_post_meta_for_api',
 			'schema' => null,
 		)
 	);
}
//取得(GET)時のオブジェクトにpostのメタをすべて追加
function get_post_meta_for_api( $object ){
 	$post_id = $object['id'];
 	return get_post_meta( $post_id );
}
//投稿(POST)時のオブジェクトからメタを更新する
function update_post_meta_for_api($value, $object, $fieldName){
	foreach($value as $key => $val){
                $rtn = update_post_meta($object->ID, $key, $val);
		if (!$rtn){
			return false;
		}
	}
	return $rtn;
}

pythonへ以下のプログラムを追加する

    payload = {"status": status,
                "slug": slug,
                "title": title,
                "content": content,
                #"date": datetime.now().isoformat(),
                "categories": category_ids,
                "tags": tag_ids}
    payload['meta_field'] = {"_knawatfibu_url":(追加したい値)}

【元の同じアイキャッチ画像】

【カスタムフィールドを更新できた後】※アイキャッチ画像が随時変更

なかなか難しかった。

困っている方もいると思うので、参考までに記述しておく。

Translate »