示例#1
0
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);
    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) {
            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;
            }
            if (!$thumb_id) {
                $thumb_id = fetch_thumbnail_image($matches, $key, $post[0]->post_content, $post_id);
            }
            if ($thumb_id) {
                update_post_meta($post_id, '_thumbnail_id', $thumb_id);
                break;
            }
        }
    }
}
function auto_post_thumbnail_image()
{
    global $wpdb;
    global $post;
    //$postが空の場合は終了
    if (isset($post) && isset($post->ID)) {
        $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);
                if (isset($thumb_id[1])) {
                    $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 . "'");
                    if (isset($result[0])) {
                        $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;
                }
            }
        }
    }
}