Facebook Graph APIを通じて投稿するときに、言語ロケールを指定して投稿したい

ども。オウタです。

WordPressで投稿した記事を、投稿時に自動でFBページのフィードに流したいという要望が多いですが、さらに多言語サイトなどをやっていると、

閲覧者の国や言語ロケールによって表示非表示をコントロールしたいということもあります。

いろいろ検索してみましたが、実装している記事が見つからなかったので書いちゃおうと思います。
一応、Wordpressで実装する場合を想定していますので、プラグインやfunctions.phpに記載することを前提に読んでください。

(省略)
  /** 
   targeting パラメーターに配列で指定するとできます。
   指定可能なパラメーター
   countries ・・・国別 
   locales ・・・言語ロケール別
     regins ・・・地域別
     cities ・・・街別
   ※指定方法はこちらを参照 https://www.iso.org/obp/ui/#search/code/
  **/
   $post_data = [
            'name' => $post->post_title,
            'link' => $link,
            'targeting' => ['countries' => ['JP','US']], //国別指定で日本と米国
            'caption' => $post->post_title,
            'description' => $fb_content,
            'message' => $fb_content,
   ];

そこで、日本語や英語(米国)で指定してみます。

'targeting' => ['locales' => ['ja_jp','en_us']], //ロケールコードで指定

しかし、これでやってみても、公開範囲は制限できませんでした。
そこで、Facebook DevelopersサイトのGraph APIのリファレンスを読んでみました。

「targeting」のセクションを展開すると、

ふむふむ、「locales」というパラメーターがやっぱり記載されています。

しかし、よく見ると、

データ型が「int[]」。。。

え?ロケールって、数値型のIDとかあんの?

ちょっと調べてみたんですが、
https://msdn.microsoft.com/ja-jp/library/cc392381.aspx

ええ、やっぱり「ja」とか「us」じゃん。

Targeted locales. Targeting Options of the type adlocale may be returned.

なんて書いてあるので、こちらのリファレンスも見てみましたが、localesの指定をしているコードサンプルもなければ、int型のロケールコードの一覧なども見つかりゃしません。

こんな時は、「Graph Explorer」の登場です。

Graph Explorerで「search?type=adlocale」と検索すると、localesの一覧がJson形式で表示されちゃいます。

やったー。

国番号とかじゃなさそうだし、Facebookが独自で振ってるやつかね。
Japanese(kansai)があるし。。。。

そんなわけで、こちらで取得した「key」を配列として渡してあげれば、投稿範囲をロケールで指定できるようになります。
こんな感じ↓。

(省略)
  /** 
   targeting パラメーターに配列で指定するとできます。
   指定可能なパラメーター
   countries ・・・国別 
   locales ・・・言語ロケール別
     regins ・・・地域別
     cities ・・・街別
   ※指定方法はこちらを参照 https://www.iso.org/obp/ui/#search/code/
  **/
   $post_data = [
            'name' => $post->post_title,
            'link' => $link,
            'targeting' => ['locales' => [
                '28', //アラビア語
                '4', //デンマーク語
                '14', //オランダ語
                '6', //英語(米国)
                '24', //英語(英国)
                '9', //フランス語(フランス)
                '44', //フランス語(カナダ)
                '5', //ドイツ語
                '29', //ヘブライ語
                '10', //イタリア語
                '12', //韓国語
                '31', //ポルトガル語(ポルトガル)
                '16', //ポルトガル語(ブラジル)
                '32', //ルーマニア語
                '17', //ロシア語
                '23', //スペイン語
                '35', //タイ語
                '52', //ウクライナ語
                '27', //ベトナム語
             ]], //国別指定で日本と米国
            'caption' => $post->post_title,
            'description' => $fb_content,
            'message' => $fb_content,
   ];             

こんな感じでございます。

みなさんもやってみてください。

関連記事

  1. 2017-8-20

    WordPressで記事一覧で日付を出力するときにはthe_date()は使わない方が良い理由

    久々の投稿です。 ちょっとしたことなんですが、Wordpressで記事一覧などを作成するときに…

ピックアップ記事

  1. Wordpressでサイト制作をしていると、 サイドバーなどにプラグインの機能などを埋め込…
  2. お疲れ様です。 Wordpressのバージョンアップがかなり頻繁に実施されていて、だいぶついて行け…
  3. しばらくやってなかったんですが、Wordpressのテンプレートを独自でゼロから作る場合、 アイキ…

おすすめ記事

  1. 久々の投稿です。 ちょっとしたことなんですが、Wordpressで記事一覧などを作成するときに…
  2. ども、オウタです。 当社ではWordpressでのメディア構築に数多く携わらせていただいており…
  3. ども。オウタです。 WordPressで投稿した記事を、投稿時に自動でFBページのフィードに流…

アーカイブ

ページ上部へ戻る