WordPressの投稿の保存時にカスタムフィールドにスクリーンショット用のURLを生成して保存する

WordPressの投稿の保存時にカスタムフィールドにスクリーンショット用のURLを生成して保存する

WordPressの投稿の保存時にカスタムフィールドに入力したURLを元に、WordPressのスクリーンショットAPI用のURLを生成して別のカスタムフィールドに保存するサンプルです。

  
この記事は2年以上前に書かれたものです。
情報が古い可能性があります。

photo credit: Peregrino Will Reign via photopin cc

カスタムテンプレートタグを作る方法もあると思いますが、一応こういう方法も可能かと。

検証バージョン

  • WordPress 3.5.2

ソースコード

URLのチェックなどは行ってないのであくまで参考程度でお願いします。

functions.php

<?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 ) ) {
		/** 投稿更新時 */

		// URLのカスタムフィールドを取得する
		$url = get_post_meta( $post_id, 'url',  true );

		// WordPressのスクリーンショットAPI用のURL生成
		$value = "http://s.wordpress.com/mshots/v1/" . trailingslashit( $url ) . "?w=300";

		// スクリーンショット用のカスタムフィールドを更新する
		update_post_meta( $post_id, 'screen_shot',  $value );
	}
}

trailingslashit で元のURLの末尾にスラッシュを追加してスクリーンショットAPI用のURL生成しています。

実行例

実行例

  

共有やブックマークなど