WordPressで記事内の画像を、一覧表示のときなどに取得してサムネイルで表示する方法。と、謎のob_startについて

WordPressでサイトを構築していると、TOPページなどにいわゆる「新着情報コーナー」として最近の記事の日付とタイトルなどを一覧表示する機会が結構あります。
そして、その時にタイトルだけじゃなくて、投稿内にはりつけられた最初の画像を表示したい。という要望が結構あります。
(アイキャッチ画像とかつかおうよ)って思わないこともないけど、過去の投稿がたくさんあるサイトのリニューアルなどのときなど、画像の中に貼り付けてある画像を使いたいシーンは結構あります。

さて、その方法について、Googleなどで
「Wordpress 投稿 最初の画像 取得」
などで検索すると、下記のようなコードをfunctions.phpに書きましょう。って内容を紹介している記事が結構見つかります。

function catch_that_image() {
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
    $first_img = $matches [1] [0];
  
    if(empty($first_img)){ //Defines a default image
        $first_img = "/images/default.jpg";
    }
    return $first_img;
}

いつもながら、皆様の公開してくださる情報には本当に助けていただきます。
ありがとうございます。なんて思いながらありがたく使わせていただくのですが、、、

ひとつ気になるところがあります。

4,5行目のところに
ob_start();
ob_end_clean();
の記述が。

これはPHPでバッファリングするときに使う関数です。
参考:http://php.net/manual/ja/function.ob-start.php

上記のコードを1行づつみてみると。

    global $post, $posts;
    $first_img = '';

投稿を格納している$post変数を関数内でも使えるようにする。
返り値を入れるための変数を初期化

    ob_start();
    ob_end_clean();

ここが気になる。

    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
    $first_img = $matches [1] [0];

正規表現で、投稿内のimgタグから画像のURLを取り出し。

    if(empty($first_img)){ //Defines a default image
        $first_img = "/images/default.jpg";
    }

投稿内に画像が貼り付けられていない時の処理。

という感じです。

そうなんです。
ob_start();
ob_end_clean();
だけ、何のためにあるのかわからないのです。
この関数でつかっている「catch_that_image」という関数名で検索すると似たようなコードが沢山でてくるのです。

おそらく、一番最初にこのコードを公開した人がいろいろと苦労をしたものと思われます。
いろいろ試しながらコードを書いていくうちに、テスト的に書いたコードをつい消し忘れる。ってのはよくあることです。

そして、その「コード」がとても便利なために、どんどんシェアされて広まっているのではないでしょうか。
と思うのですが。。。

そんなわけで、どなたか情報がありましたら教えて下さい。

情報募集中でございます。

  • 何かこういうときのために必要なのだ。という情報がありましたら教えて下さい。
  • もしくは、これは古いコードで今はこっちを使うんだぜ。ってのがありましたら教えて下さい

一応、不要と思われる部分を取り除いたコードを掲載しておきます。

function catch_that_image() {
    global $post, $posts;
    $first_img = '';
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
    $first_img = $matches [1] [0];
  
    if(empty($first_img)){ //Defines a default image
        $first_img = "/images/default.jpg";
    }
    return $first_img;
}

投稿内で使うとき

<img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>">

こんな感じです。

もっと仕事をして欲しい経営者と、もっと仕事がしたい従業員がいても咬み合わないわけ。

仕事柄、地域の中小企業の社長さんたちとよくお話をします。
また私自身も、いままで店長、経営者、従業員、マネージャーといろいろな立場で仕事をしてきました。

そこで思うことがあります。

「もっと経営者視点をもって仕事に取り組んでほしい」
これは多くの経営者がクチにするところです。
でも、ほとんどの経営者が、従業員の働きに満足していないと思います。

そんな中で、ある経営者さんの言葉が耳に残っています。

「経営者とは責任のおおきな仕事。そして孤独な仕事。従業員は従業員で、彼らなりの考えがある。
だから、経営者視点を持てとか、事業理念を共有せよ。というのは経営者として孤独に耐えられない人がやることで
それは経営者失格じゃないかと思う」

そんな話を聞きました。
その人の会社は、そこそこに規模の大きな会社ですが、経営サイドと従業員の関係はとても良好で、いわゆるホワイト企業といってもいい内容だと思えました。

毎日耳にタコができるほど、「経営者感覚、経営者感覚」と言われてる会社では、経営者と従業員の間に深い溝があり、一方でそういうことのない一種の割り切り感を持っている経営者は従業員とうまくやっている。会社の業績も派手ではないけど順調。

一体何が違うのか?

先程も言いましたが、私はいろいろな会社でいろいろな立場で仕事をさせてもらいましたが、その中でわかったことがあります。
それは、仕事には大きくわけて3つのタイプがあり、それぞれに向いている人がいる。
それらのタイプをちゃんと使い分けられる経営というのが必要なのではないか?ということです。

その仕事のタイプというのはこうです。

1.0から1を生み出す仕事。
 わかりやすくいえば、クリエイターや商品企画などはそうですよね。
 また、営業の仕事でも、いろいろなタイプがありますが、新しい商品を売ることになったときに、どんな先に、どういう方法で訪問し、どういうアプローチで、どんなトークで売っていくのか?を考えるのはこのカテゴリーの仕事だと思います。
 経理事務でも新しい業務をはじめるときに、それをどうやって効率化してまわすか?数字に見えるようにまとめるか?を考えるのも仕事です。
 この仕事は概ねハイリスク・ハイリターンの仕事です。
 新しいことにチャレンジしていくので成功すれば大きいですが、当然失敗することもおおくなります。

2.1を3や10にする仕事
 こちらは、上記1の仕事を引き継いで、ちゃんとマニュアル化したり仕事として確率していく仕事です。
 例えば、上記1の営業マンが、あたらしい仕事をとれたとしてます。その行動を解析して、タスク化して、マニュアル化します。どうやら既存顧客の中でもこういう業種に受け入れられるかもしれない。ということがわかれば、人数をあつめて既存顧客へテレアポをしたり、こういうパンフレットが有効だということがわかれば、そのパンフレットをブラッシュアップして誰もが使える営業ツールとして量産し、営業マンを集めて一斉に顧客を回らせたり。。という仕事です。

3.10にした仕事をしっかりと遂行する仕事
 これは上記2で、仕事として確立しマニュアル化した仕事を、しっかりとこなす役割の仕事です。
 例えば、このパンフレットを持って、毎日顧客を10件まわってこい。という指令にしたがって、しっかりとそれをこなしていきます。

これらの1,2,3がちゃんと機能して初めて会社組織が成り立つのではないかと考えます。

そう考えたときに、「経営者視点を持て」という言葉は誰に向かって発せられる言葉でしょうか?
私は1番 と 2番の分野の人に対してだと思います。

そして3番の人たちには、経営者視点とかはいいから、とりあえず大変だと思うけど、給料分はしっかり仕事しようぜ。という声掛けが大切なのだと思うのです。

上記1番の仕事(以下、分野1と記します)、これはとても派手です。
0から1を生み出すのですから、成功した時は経営者からみればとても大きな成功となります。
だから、とくに中小企業の経営者が欲しい人材って、この分野になります。
でも、多くの場合は、その「成功」にしか期待していない場合が多いです。
ところが、先程も書きましたが、この分野の仕事って失敗も多いのです。

例えば、中途人材を採用するにあたって、前職でたまたま成功していた分野1の人が、入社してきたとします。
経営者はその成功だけに期待してしまいがちです。
だから、新たに取り組む仕事で失敗が続くと、その期待値の落差に あいつはやる気が無い。給料泥棒だ。
的な話になります。
中小企業の経営者の多くが、実はこのタイプであることが多いため、物事が客観的に見れずにいるということが多いです。

こうして軋轢の中で離れていってしまうことが多いように思います。

上記2の仕事(以下、分野2と記します)
これは、とてもわかりづらい仕事です。
とくに経営者は、分野1の資質の人が多いですから、前だけを見てひたすら前進していくので、意外と自分がすっちらかした後始末をしてくれる立場の人を見ていないことが多いのです。
また数字が読めない経営者はこの部分を評価しません。
実は経営者視点を最も持っているのがこの分野なのですが、経営者みずから遠ざけてしまうのです。
評価されないままで、いつしかみんな離れていってしまいます。

上記3の仕事
これはとてもわかりやすい仕事です。
いわゆる「仕事」と言われることのほとんどがこれを指していると思います。
よく「言われたことしかしない」ということは非難の対象となりますが、
この人達が、言われたことをちゃんと遂行することで、ちゃんと利益がでる。
という仕組みをもっている会社は強いです。

例えば、このトークで毎日100件テレアポかければ、必ず3件はアポが取れる。
そのアポ先に、このパンフレットを持って訪問すれば10%は受注できる。
みたいな「仕組み」が整っていれば、あとは人をあつめて、この通りに動くように管理すればいいわけです。

この分野の仕事には実は経営者視点はそんなにいらないんじゃないかと思います。
言われたことを、しっかりと遂行する。って事がなにより大事です。

「たしかにそうだけど、そんな仕組みがあればどこも苦労しないよ」
と言われるかもしれませんが、仕組を考える事こそが、本来は経営者サイトの仕事のはずです。

でも、多くの場合は、経営者は、この層にたいして「経営者視点を持て」と言います。

仕事の内容は「いかにして、毎日しっかりと仕事をこなすか?」という分野の人に対して経営者視点を持てと言われても、言われた方はなんことかわかりません。

そして、本来は会社の屋台骨をささえているこの層の人たちをしっかり評価しないので、優秀な人はやめていきます。
残るのは、言われたことすらできない。言われたことをやらない。という層の人たちだけになります。

そうした状況に気づかずに、今日も経営者は「従業員には経営者視点をもってほしい」と毎日愚痴るのです。

文頭で述べた、経営者さんの話を聞きながら、なんとなくこんなことを思いました。
あくまで、理想ではありますが、私もこういう事を見据えて今後仕事をしていけたらいいなと感じています。