アイキャッチの自動挿入関数のソース
/////////////////////////////////////////////
//コピペ一発でWordpressの投稿時にアイキャッチを自動設定するカスタマイズ方法(YouTube対応版)
//http://nelog.jp/auto-post-thumbnail-custum
//楽天イメージタグ対応
//http://tecinfo.yuzumaru.co.jp/
/////////////////////////////////////////////
//WP_Filesystemの利用
require_once(ABSPATH . ‘/wp-admin/includes/image.php’);
//イメージファイルがサーバー内にない場合は取得する
function fetch_thumbnail_image($matches, $key, $post_content, $post_id){
//正しいタイトルをイメージに割り当てる。IMGタグから抽出
$imageTitle = ”;
preg_match_all(‘/<\s*img [^\>]*title\s*=\s*[\””\’]?([^\””\’>]*)/i’, $post_content, $matchesTitle);
if (count($matchesTitle) && isset($matchesTitle[1])) {
$imageTitle = $matchesTitle[1][$key];
}
//処理のためのURL取得
$imageUrl = $matches[1][$key];
//楽天イメージタグの処理
$p=strpos($imageUrl,’?pc’);
if($p>0){
$imgWork=mb_substr($imageUrl,$p);
$imgWork=urldecode($imgWork);
$p=strpos($imgWork,’=’);
if($p>0){
$imgWork=mb_substr($imgWork,$p+1);
$p=strpos($imgWork,’?’);
if($p>0){
$imageUrl=mb_substr($imgWork,0,$p);
}
}
}
//ファイル名の取得
$filename = substr($imageUrl, (strrpos($imageUrl, ‘/’))+1);
if (!(($uploads = wp_upload_dir(current_time(‘mysql’)) ) && false === $uploads[‘error’])){
return null;
}
//ユニック(一意)ファイル名を生成
$filename = wp_unique_filename( $uploads[‘path’], $filename );
//ファイルをアップロードディレクトリに移動
$new_file = $uploads[‘path’] . “/$filename”;
if (!ini_get(‘allow_url_fopen’)) {
$file_data = curl_get_file_contents($imageUrl);
} else {
$file_data = @file_get_contents($imageUrl);
}
if (!$file_data) {
return null;
}
file_put_contents($new_file, $file_data);
//ファイルのパーミッションを正しく設定
$stat = stat( dirname( $new_file ));
$perms = $stat[‘mode’] & 0000666;
@ chmod( $new_file, $perms );
//ファイルタイプの取得。サムネイルにそれを利用
$wp_filetype = wp_check_filetype( $filename, $mimes );
extract( $wp_filetype );
//ファイルタイプがない場合、これ以上進めない
if ( ( !$type || !$ext ) && !current_user_can( ‘unfiltered_upload’ ) ) {
return null;
}
//URLを作成
$url = $uploads[‘url’] . “/$filename”;
//添付(attachment)配列を構成
$attachment = array(
‘post_mime_type’ => $type,
‘guid’ => $url,
‘post_parent’ => null,
‘post_title’ => $imageTitle,
‘post_content’ => ”,
);
$thumb_id = wp_insert_attachment($attachment, $file, $post_id);
if ( !is_wp_error($thumb_id) ) {
//attachmentのアップデート
wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $new_file ) );
update_attached_file( $thumb_id, $new_file );
return $thumb_id;
}
return null;
}
//投稿内の最初の画像をアイキャッチに設定する(Auto Post Thumnailプラグイン的な機能)
function auto_post_thumbnail_image() {
global $wpdb;
global $post;
$post_id = $post->ID;
//アイキャッチが既に設定されているかチェック
if (get_post_meta($post_id, ‘_thumbnail_id’, true) || get_post_meta($post_id, ‘skip_post_thumb’, true)) {
return;
}
$post = $wpdb->get_results(“SELECT * FROM {$wpdb->posts} WHERE id = $post_id”);
//正規表現にマッチしたイメージのリストを格納する変数の初期化
$matches = array();
//投稿本文からすべての画像を取得
preg_match_all(‘/<\s*img [^\>]*src\s*=\s*[\””\’]?([^\””\’>]*)/i’, $post[0]->post_content, $matches);
//YouTubeのサムネイルを取得(画像がなかった場合)
if (empty($matches[0])) {
preg_match(‘%(?:youtube\.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^”&?/ ]{11})%i’, $post[0]->post_content, $match);
if (!empty($match[1])) {
$matches=array(); $matches[0]=$matches[1]=array(‘http://img.youtube.com/vi/’.$match[1].’/mqdefault.jpg’);
}
}
if (count($matches)) {
foreach ($matches[0] as $key => $image) {
//画像がイメージギャラリーにあったなら、サムネイルIDをCSSクラスに追加(イメージタグからIDを探す)
preg_match(‘/wp-image-([\d]*)/i’, $image, $thumb_id);
$thumb_id = $thumb_id[1];
//サムネイルが見つからなかったら、データベースから探す
if (!$thumb_id) {
$image = substr($image, strpos($image, ‘”‘)+1);
$result = $wpdb->get_results(“SELECT ID FROM {$wpdb->posts} WHERE guid = ‘”.$image.”‘”);
$thumb_id = $result[0]->ID;
}
//それでもサムネイルIDが見つからなかったら、画像をURLから取得する
if (!$thumb_id) {
$thumb_id = fetch_thumbnail_image($matches, $key, $post[0]->post_content, $post_id);
}
//サムネイルの取得に成功したらPost Metaをアップデート
if ($thumb_id) {
update_post_meta( $post_id, ‘_thumbnail_id’, $thumb_id );
break;
}
}
}
}
//新しい投稿で自動設定する場合
add_action(‘save_post’, ‘auto_post_thumbnail_image’);
add_action(‘draft_to_publish’, ‘auto_post_thumbnail_image’);
add_action(‘new_to_publish’, ‘auto_post_thumbnail_image’);
add_action(‘pending_to_publish’, ‘auto_post_thumbnail_image’);
add_action(‘future_to_publish’, ‘auto_post_thumbnail_image’);
/////////////////////////////////////////////
// ここまで
/////////////////////////////////////////////
//コピペ一発でWordpressの投稿時にアイキャッチを自動設定するカスタマイズ方法(YouTube対応版)
//http://nelog.jp/auto-post-thumbnail-custum
//楽天イメージタグ対応
//http://tecinfo.yuzumaru.co.jp/
/////////////////////////////////////////////
//WP_Filesystemの利用
require_once(ABSPATH . ‘/wp-admin/includes/image.php’);
//イメージファイルがサーバー内にない場合は取得する
function fetch_thumbnail_image($matches, $key, $post_content, $post_id){
//正しいタイトルをイメージに割り当てる。IMGタグから抽出
$imageTitle = ”;
preg_match_all(‘/<\s*img [^\>]*title\s*=\s*[\””\’]?([^\””\’>]*)/i’, $post_content, $matchesTitle);
if (count($matchesTitle) && isset($matchesTitle[1])) {
$imageTitle = $matchesTitle[1][$key];
}
//処理のためのURL取得
$imageUrl = $matches[1][$key];
//楽天イメージタグの処理
$p=strpos($imageUrl,’?pc’);
if($p>0){
$imgWork=mb_substr($imageUrl,$p);
$imgWork=urldecode($imgWork);
$p=strpos($imgWork,’=’);
if($p>0){
$imgWork=mb_substr($imgWork,$p+1);
$p=strpos($imgWork,’?’);
if($p>0){
$imageUrl=mb_substr($imgWork,0,$p);
}
}
}
//ファイル名の取得
$filename = substr($imageUrl, (strrpos($imageUrl, ‘/’))+1);
if (!(($uploads = wp_upload_dir(current_time(‘mysql’)) ) && false === $uploads[‘error’])){
return null;
}
//ユニック(一意)ファイル名を生成
$filename = wp_unique_filename( $uploads[‘path’], $filename );
//ファイルをアップロードディレクトリに移動
$new_file = $uploads[‘path’] . “/$filename”;
if (!ini_get(‘allow_url_fopen’)) {
$file_data = curl_get_file_contents($imageUrl);
} else {
$file_data = @file_get_contents($imageUrl);
}
if (!$file_data) {
return null;
}
file_put_contents($new_file, $file_data);
//ファイルのパーミッションを正しく設定
$stat = stat( dirname( $new_file ));
$perms = $stat[‘mode’] & 0000666;
@ chmod( $new_file, $perms );
//ファイルタイプの取得。サムネイルにそれを利用
$wp_filetype = wp_check_filetype( $filename, $mimes );
extract( $wp_filetype );
//ファイルタイプがない場合、これ以上進めない
if ( ( !$type || !$ext ) && !current_user_can( ‘unfiltered_upload’ ) ) {
return null;
}
//URLを作成
$url = $uploads[‘url’] . “/$filename”;
//添付(attachment)配列を構成
$attachment = array(
‘post_mime_type’ => $type,
‘guid’ => $url,
‘post_parent’ => null,
‘post_title’ => $imageTitle,
‘post_content’ => ”,
);
$thumb_id = wp_insert_attachment($attachment, $file, $post_id);
if ( !is_wp_error($thumb_id) ) {
//attachmentのアップデート
wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $new_file ) );
update_attached_file( $thumb_id, $new_file );
return $thumb_id;
}
return null;
}
//投稿内の最初の画像をアイキャッチに設定する(Auto Post Thumnailプラグイン的な機能)
function auto_post_thumbnail_image() {
global $wpdb;
global $post;
$post_id = $post->ID;
//アイキャッチが既に設定されているかチェック
if (get_post_meta($post_id, ‘_thumbnail_id’, true) || get_post_meta($post_id, ‘skip_post_thumb’, true)) {
return;
}
$post = $wpdb->get_results(“SELECT * FROM {$wpdb->posts} WHERE id = $post_id”);
//正規表現にマッチしたイメージのリストを格納する変数の初期化
$matches = array();
//投稿本文からすべての画像を取得
preg_match_all(‘/<\s*img [^\>]*src\s*=\s*[\””\’]?([^\””\’>]*)/i’, $post[0]->post_content, $matches);
//YouTubeのサムネイルを取得(画像がなかった場合)
if (empty($matches[0])) {
preg_match(‘%(?:youtube\.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^”&?/ ]{11})%i’, $post[0]->post_content, $match);
if (!empty($match[1])) {
$matches=array(); $matches[0]=$matches[1]=array(‘http://img.youtube.com/vi/’.$match[1].’/mqdefault.jpg’);
}
}
if (count($matches)) {
foreach ($matches[0] as $key => $image) {
//画像がイメージギャラリーにあったなら、サムネイルIDをCSSクラスに追加(イメージタグからIDを探す)
preg_match(‘/wp-image-([\d]*)/i’, $image, $thumb_id);
$thumb_id = $thumb_id[1];
//サムネイルが見つからなかったら、データベースから探す
if (!$thumb_id) {
$image = substr($image, strpos($image, ‘”‘)+1);
$result = $wpdb->get_results(“SELECT ID FROM {$wpdb->posts} WHERE guid = ‘”.$image.”‘”);
$thumb_id = $result[0]->ID;
}
//それでもサムネイルIDが見つからなかったら、画像をURLから取得する
if (!$thumb_id) {
$thumb_id = fetch_thumbnail_image($matches, $key, $post[0]->post_content, $post_id);
}
//サムネイルの取得に成功したらPost Metaをアップデート
if ($thumb_id) {
update_post_meta( $post_id, ‘_thumbnail_id’, $thumb_id );
break;
}
}
}
}
//新しい投稿で自動設定する場合
add_action(‘save_post’, ‘auto_post_thumbnail_image’);
add_action(‘draft_to_publish’, ‘auto_post_thumbnail_image’);
add_action(‘new_to_publish’, ‘auto_post_thumbnail_image’);
add_action(‘pending_to_publish’, ‘auto_post_thumbnail_image’);
add_action(‘future_to_publish’, ‘auto_post_thumbnail_image’);
/////////////////////////////////////////////
// ここまで
/////////////////////////////////////////////
プロフィール
カテゴリー
最近の投稿
- 稼げるサイトを作るコツ
- ご購入者様専用ページ
- ゆずまるオリジナルツール
- コピーライティング
- ステップ型アフィリ習得ASB48
- ブルートフォースアタック
- プログラマ雑学
- メールブログ開設ツール メブクリ
- ワードプレス
- ワードプレス専用エディタ WordPressPost
- 人情PPC
- 教材レビュー評価一覧
- 無料レポート
- 未分類
- AQUAS
- ARM-S
- B-tube-MAX
- Easy eCover Creator
- Easy・Easy・Easy
- KAETEN
- PPC教材レビュー一覧
- SIRIUS(シリウス)
- お勧め優良商材一覧
- せりどの錬金術師
- どんどんブログ応援団
- ゆずまるカバーG
- アフィリエイトファクトリー
- アメブロでザクザク(zaqzaq)稼ぐ
- アンリミテッドアフィリエイト
- イメージチェックアフィリエイト
- イージークリックカウンター
- カウンセリングライティング
- クイック3Dカバー
- クロスメディア・アフィリエイト
- クールでかっこいいMTテーマ
- シナリエイト
- シンプルショッピングアフィリエイト
- ダウンロード
- チョコラビ5
- ツール商材レビュー一覧
- ドアノッカー(DOOR KNOCKER)
- パワーアフィリエイト
- パーフェクトトレジャー
- ブルーオーシャンPPC
- ブログモ
- ブログ投稿っち
- メルマガ配信ツールメガまる
- モーションダイブ
- ランディングページビルダー
- ルーキーズアフィリエイト
- 携帯サイト量産ツールモバポン
- 新・魔法のコピーライティング
- 最新まぁまぁ情報商材一覧
- 楽販アフィリオ
- 疾風アフィリエイト
- 稼げない/購入してはいけない教材
- 賢者のSEO
- 0から始めて毎月30万~を稼ぐ、資料請求・無料系アフィリエイト術
- 2017年6月
- 2017年4月
- 2017年3月
- 2016年5月
- 2015年8月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年10月
- 2014年9月
- 2014年7月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年10月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年11月
- 2012年10月
- 2012年9月
- 2012年8月
- 2012年7月
- 2012年6月
- 2012年5月
- 2012年4月
- 2012年3月
- 2012年2月
- 2012年1月
- 2011年12月
- 2011年11月
- 2011年10月
- 2011年9月
- 2011年8月
- 2011年7月
- 2011年6月
- 2011年5月
- 2011年4月
- 2011年3月
- 2011年2月
- 2011年1月
- 2010年12月
- 2010年11月
- 2010年10月