当サイトには広告が含まれております

カスタム投稿タイプの入力画面「ISBN」コード+APIで書籍情報を自動セットする方法

この記事は最終更新日から5年経過しています。内容が古い可能性があります。

Photo by the Bialons on Unsplash

今まで数回「書籍」に関する記事を書いてきました。そのシリーズの最後の記事がこの投稿になります。これら複数の記事で実現したかったことは、「ISBNコードを入力するだけで書籍APIから書名や著者名などの情報を参照して、表示するカスタム投稿タイプを作る」ということで、今回の記事でそれが完成します(^^)/

記事をざっと見る

楽天ブックス書籍検索API→書籍カスタム投稿タイプ作成→カスタム投稿タイプを表示させる

今まで書いた3つの記事は以下の通りです。

あわせて読みたい
楽天ブックス書籍検索APIでISBNコードから書籍情報を表示する:ショートコード編 書籍情報は色々なAPIで割と昔から公開されています。最近ではGoogleやAmazon、楽天など書籍を販売しているWEBサイトでもAPIを公開するようになり、より手軽に使えるよう...

で、楽天ブックス書籍検索APIを使うには?という記事を書きました。ここでは簡単にショートコードで使う方法も書いてあります。

あわせて読みたい
カスタム投稿タイプとカスタムフィールドを使って、書籍情報を簡単に入力できるようにする カスタム投稿タイプとカスタムフィールドという言葉は聞いたことがあっても、ごちゃごちゃしてしまってはっきりとはわかっていない、という方がいらっしゃるかと思いま...

ではカスタム投稿タイプとカスタムフィールドを使って、書籍というカスタム投稿タイプを作るところまでについて書きました。

あわせて読みたい
カスタム投稿タイプ用を表示させる:カスタムテンプレートを作る方法 前回は「カスタム投稿タイプとカスタムフィールドを使って、書籍情報を簡単に入力できるようにする」という記事を書きました。カスタム投稿タイプのカスタムフィールド...

ではカスタム投稿タイプ用を表示させるためのカスタムテンプレートを作る方法について書きました。

今回は、以前の記事で作った「書籍」カスタム投稿タイプの入力画面で、ISBNコードを入力したときに楽天ブックス書籍検索APIから各フィールドに値をセットする方法について書きます。

事前準備。楽天ブックス書籍検索APIと追加したカスタムフィールドのIDをメモしておく

まずは事前に準備が必要です。

楽天ブックス書籍検索APIのアプリケーションIDを取得

楽天ブックス書籍検索APIを使うために必要なアプリケーションIDを取得する

を参照して、楽天ブックス書籍検索APIアプリケーションIDを取得しておきます。

カスタム投稿フィールドのIDをメモする

カスタム投稿タイプ「書籍」に追加したカスタム投稿フィールドIDを調べてメモしておきます。

あわせて読みたい
カスタム投稿タイプとカスタムフィールドを使って、書籍情報を簡単に入力できるようにする カスタム投稿タイプとカスタムフィールドという言葉は聞いたことがあっても、ごちゃごちゃしてしまってはっきりとはわかっていない、という方がいらっしゃるかと思いま...
あわせて読みたい
カスタム投稿タイプ用を表示させる:カスタムテンプレートを作る方法 前回は「カスタム投稿タイプとカスタムフィールドを使って、書籍情報を簡単に入力できるようにする」という記事を書きました。カスタム投稿タイプのカスタムフィールド...

の2記事により、書籍カスタム投稿タイプが作成済みで、表示用テンプレートもあるという前提で進めています。

調べ方は、

ダッシュボード で 書籍>新規追加 をクリック、

このように入力画面が表示されるので

右クリックして、ページのソースを表示をクリック

ctrlキーと f を同時に押して、

検索窓に ISBN と入力して、リターン

このように表示されます。ISBNコードのIDを調べます。

<label for="acf-field_5d5e54ce916ed">ISBN13桁 <span class="acf-required">*</span></label></div>
<div class="acf-input">
<div class="acf-input-wrap"><input type="text" id="acf-field_5d5e54ce916ed" name="acf[field_5d5e54ce916ed]" required="required"/></div></div>

input type=”text” id=の後にある文字列(この場合は acf-field_5d5e54ce916ed)をコピーしておきます。

これと同じ方法で、書籍名、著者、出版社、発売日、画像urlのIDを調べてコピーしメモしておきます。

管理画面のヘッダに、ISBNから書籍情報を取得してセットするjQueryを追加する

今回追加する動作は管理画面だけで有効にしたいので、管理画面のヘッダにjQueryを追加します。

管理画面のヘッダにコードを追加するには

admin_head アクションを使います。

jQueryのコードをCode Snipettsあるいは子テーマのfunctions.phpで追加する

今回の「ISBN」コード+APIで書籍情報を自動セットするjQueryのコードは、Code Snipettsあるいは子テーマのfunctions.phpで追加することができます。

code snippetsについては

あわせて読みたい
プラグイン「Code Snippets」で機能を追加するとテーマを変更しても大丈夫 仕事でホームページを制作する際にphpでコードを書いてカスタマイズをすることが多いです。その場合、「子テーマのfunctions.php」にコードを書いています。コードは使...

こちらの記事を参照してください。

今回はとりあえずプラグインcode snippetsを使う方法で説明したいと思います。

code snippetsをインストール後、

ダッシュボード Snippets>Add New をクリックします。

わかりやすいタイトルをつけてからコードを追加します。

追加するコードは以下の通りです。

add_action( 'admin_head', function () { ?>
    <script>
jQuery(function($){
    $(document).ready(function(){
        // 入力域のID
        isbn_field = '#メモしたISBNのID';
        book_field = '#メモした書籍名のID';
        author_field = '#メモした著者のID';
        publisher_field = '#メモした出版社のID';
        salesdate_field = '#メモした発売日のID';
        image_field = '#画像urlのID';

        // isbnが変更されたとき、書籍情報を取得
        $(isbn_field).on('change', function(){
            // クリア
            $(book_field).val('');
            $(author_field).val('');
            $(publisher_field).val('');
            $(salesdate_field).val('');
            $(image_field).val('');
            $('#rakuten_book_image').remove();
            if($(isbn_field).val().length == 13){
                // リクエストURLを設定する
                $.get('https://app.rakuten.co.jp/services/api/BooksBook/Search/20170404?', {
                    applicationId: "取得した楽天books書籍検索APIのアプリケーションID",
                    isbn:  $(isbn_field).val()
                    // 結果が帰ってきたらここでそれを受け取り、空でなければ順番に出力していく
                    }, function(data){
                    if (data.count > 0){
                        //console.log(data);
                        book = data['Items']['0'];
                        console.log(book);
                        $(book_field).val(book.Item.title);
                        $(author_field).val(book.Item.author);
                        $(publisher_field).val(book.Item.publisherName);
                        $(salesdate_field).val(book.Item.salesDate);
                        $(image_field).val(book.Item.largeImageUrl);
                        $(image_field).after('<img id="rakuten_book_image" src="' + book.Item.largeImageUrl + '">');
                    } else {

                     } // if
                }); // function(data)   
            }

        });
    });
});


    </script>
<?php } );

長いのですが(^_^;)、変更するところは、先ほど準備しておいた値で

        // 入力域のID
        isbn_field = '#メモしたISBNのID';
        book_field = '#メモした書籍名のID';
        author_field = '#メモした著者のID';
        publisher_field = '#メモした出版社のID';
        salesdate_field = '#メモした発売日のID';
        image_field = '#画像urlのID';

この部分は # を足してメモしておいたIDを入力します。

その他は

                    applicationId: "取得した楽天books書籍検索APIのアプリケーションID",

この部分です。取得しておいた楽天books書籍検索APIのアプリケーションIDの値で更新します。

Save Changes and Activateをクリック

子テーマのfunctions.phpに追加する場合も上記のコードを貼り付ければ動作すると思います。

書籍情報でISBNコードから書籍の情報がセットされるか、試してみる

これで準備が終わったので、書籍情報で新規追加をしてみます。

ダッシュボード 書籍>新規追加をクリック

ISBN13桁にコードを入力してどうなるか、見てみます。

このように、ISBNコードを入力後、別のフィールドにカーソルが移ったときに楽天books書籍検索APIから値を取得して、各フィールドにセットします。

この状態で

公開する

公開をクリック。

書籍の一覧画面に、新しい書籍が追加されて

詳細ページにも取得して保存した値が表示されました。

これで楽天楽天books書籍検索APIの呼び出しは、管理画面でISBNコードを入れて取得するときだけになりますのでAPIの制限も気にせずに使えるようになったかと思います。

まとめ:ISBNコードを入力するだけでAPIから正確な情報をセットして保存、表示する一連の流れ

ということで、全4記事になりましたが、ISBNコードを入力するだけでAPIから正確な情報をセットして保存、表示するということができるようになります。

下記にこのブログの記事も合わせて4記事をまとめておきますのでよろしければご覧ください。

あわせて読みたい
楽天ブックス書籍検索APIでISBNコードから書籍情報を表示する:ショートコード編 書籍情報は色々なAPIで割と昔から公開されています。最近ではGoogleやAmazon、楽天など書籍を販売しているWEBサイトでもAPIを公開するようになり、より手軽に使えるよう...
あわせて読みたい
カスタム投稿タイプとカスタムフィールドを使って、書籍情報を簡単に入力できるようにする カスタム投稿タイプとカスタムフィールドという言葉は聞いたことがあっても、ごちゃごちゃしてしまってはっきりとはわかっていない、という方がいらっしゃるかと思いま...
あわせて読みたい
カスタム投稿タイプ用を表示させる:カスタムテンプレートを作る方法 前回は「カスタム投稿タイプとカスタムフィールドを使って、書籍情報を簡単に入力できるようにする」という記事を書きました。カスタム投稿タイプのカスタムフィールド...
あわせて読みたい
カスタム投稿タイプの入力画面「ISBN」コード+APIで書籍情報を自動セットする方法 今まで数回「書籍」に関する記事を書いてきました。そのシリーズの最後の記事がこの投稿になります。これら複数の記事で実現したかったことは、「ISBNコードを入力する...

この記事が気に入ったら
いいね または フォローしてね!

あなたのシェアが励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントを残す

記事をざっと見る