この記事は2年以上前に書かれたものです。
情報が古い可能性があります。
情報が古い可能性があります。
なお当サンプルでは、投稿のタイトルをキーにしてAPIを使用し、関連する書籍のデータを取得しています。
検証バージョン
- WordPress 3.3.2
- WordPress 3.4
ソースコード
以下のソースコードをテーマのfunctions.phpに記述しました。
投稿を公開した時や更新した時にAPIで取得したデータがカスタムフィールドに入ります。
プロキシ環境やネットワークの環境によってAPIにアクセス出来ない場合は、タイムアウトになる可能性がございます。
<?php // add_action( フックするアクション名, コールバック, 実行優先順位, 引数の数 ) add_action( 'save_post' , 'action_save_post', 99, 2 ); function action_save_post( $post_id, $post ) { if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) { /** 自動保存時 */ // 何もしない return $post_id; } elseif ( !empty( $_POST ) ) { /** 投稿更新時 */ // 投稿のタイトルをキーにAPIを使用 $gbook = get_google_book_search_api( $post->post_title ); // カスタムフィールド登録 update_post_meta( 投稿ID, カスタムフィールドのキー, 値 ) update_post_meta( $post_id, 'gbook1', $gbook ); update_post_meta( $post_id, 'gbook2', $gbook ); } } // 書籍を検索して関連のあるものを一件返す(テストなので中身云々はご勘弁) function get_google_book_search_api( $name ) { $url = "http://books.google.com/books/feeds/volumes?hl=ja&q=". urlencode( $name ) ."&max-results=1"; $str = file_get_contents( $url ); $str = str_replace( "dc:", "", $str ); $xml = simplexml_load_string( $str ); return (string)$xml->entry->link[0]["href"]; }
実行結果
投稿タイトルに WordPress と入力して投稿を公開すると結果はこんな感じ。
[…] WordPressの投稿更新時にAPIを使って取得したデータをカスタムフィールドに登録する – WebCake – ウェブケイク […]