AWSのCloudFrontに既存のWordPressサイトを組み込ませる

ここみててなるほどと思ったので試してみた。

WordPressサイトをCloudFrontで配信する
http://qiita.com/Ichiro_Tsuji/items/38592e737257cb45ca13

で、
AWSのCloudFrontに既存のWordpressサイトを組み込ませるのにちょいと試行錯誤してみた。

目標:現サイトのドメインでcloudfrontに接続させる。

現サイトはsub.hoge.comとした場合の流れ。

  1. httpconfのVirtual Hostから、ServerName”sub.hoge.com”を”sub-cloud.hoge.com”に変更
  2. serverをリスタート
  3. Route56のhostzoneに”sub-cloud.hoge.com”を追加、EC2のIPを指定
  4. wordpressのsite URLを”sub-cloud.hoge.com”に変更
    先のURLではhomeURLも変更とあるけど、変更したらログインできなくなったのでそのままでやってみている。
  5. cloudFrontのオリジンに”sub-cloud.hoge.com”を追加
  6. cloudFrontのCNAMEsを現サイトの”sub.hoge.com”に変更
  7. Route56のhostzoneに”sub.hoge.com”をエイリアスに変更、cloudFrontのDomainName追加

これでとりあえず稼働中。
爆速や!

AdvancedCustomField:wordpressでカスタムフィールドを使って投稿に紐づいた動画を取得して一覧で表示させる。

WP_Queryを作ってwp_oembed_getでコードを出力、あわせて出力コードを加工する感じ。
あとはレスポンシブをどうするかやなぁ。
にしてもAdvancedCustomField便利だなぁ。

[php]
$args = array(
‘post_type’ => ‘hoge’, // カスタム投稿タイプの名前
‘meta_key’=>’movie_url’, //カスタムフィールドのフィールド名
‘meta_value’=>’null’, //カスタムフィールドの値
‘meta_compare’ => ‘!=’ //空ではない
);
$the_query = new WP_Query($args);
/*movie_urlの含まれるカスタム投稿から動画のみ抽出 */
if($the_query->have_posts()){

while ( $the_query->have_posts() ) : $the_query->the_post();
get_the_title($post->ID);
$url = get_field("movie_url", $post->ID);
$embed_code = wp_oembed_get( $url, array( ‘width’ => 320 ) );//とりあえずembedタグ上でサイズを決めておいた
$embed_code = preg_replace("@src=([‘\"])?([^’\">\s]*)@", "src=$1$2&showinfo=0&rel=0", $embed_code); //コードを整形、第二引数でお好みのスイッチつける
echo $embed_code;
endwhile;
[/php]

参考
WordPressで、カスタムフィールドが特定の値の記事のリストを作成する

wp_oembed_get:WordPress私的マニュアル

Modify Youtube Oembed URLs to remove showinfo and more