最近、Wordpressでサイトを制作するケースが増えていると思います。
業者も、趣味も、個人事業主も。
まぁ、便利ですよね。
制作側はWPをインストールしてデザインとテーマのコーディングと初期の固定ページ程度を作るだけで納品できますもんね。
クライアント側も、HTML知識のない人でも管理ページがあるので固定ページの文言とかいくらでも変更できますもんね。
今までは少し変更したいとかいう場合でもお金払って業者に頼む作業でしたもんね。
そういった意味では業者側は一長一短で、ちょっとの変更とかは小銭ですけどそういうところも含めてクライアントと人間関係が築ける部分もあるので、利便性ばかりを追求するのもどうなの?とか思ってしまうけれども。
あと、DBとかを使ってクライアント側が簡単に更新できるシステム的なものを作ってオプション費用を上乗せすることが出来ましたが、それも大方必要ないですもんね。
複雑なのはさすがにWPだけでは賄えないこともあるので、そういうのはオーダーメイドでそれなりの費用をもらうことができるけどね。
で、Wordpressで作成した場合、ほとんどのファイルはWordpressのデフォルトファイルでサイトを構成することになると思うのですが、前述したようにWPにないような機能を別プログラムで追加する場合、いろいろと不都合が出てきてしまうのです。
実際に、依頼でDBを使ったシステムをプログラミングする時は当然オリジナルのテーブルをDBに作らないといけません。
そのテーブルに入れたデータを「WP内のページに出力させる」という場合は、WPのデフォルトファイル「wp-db.php」というファイル内をちょこっと変更すればテーブルは認識され、投稿データを出力するような感じでデータを扱うことが出来るようです。
まぁ、別にそのファイルをいじらなくてもSQL文(select文など)を追加記述してそれをWPの仕様に沿ったクエリ実行をさせれば全然できるんですけどね。
問題はそこではなく、「WPで用意されているファイルではなく、別でPHPを使ったページを作る場合に、そのページ自体はWPに組み込まずに、WPに用意されている関数をそのページで使う」ことが出来たら便利だなぁ、っていうか、それが使えれば、WPの関数を解析する必要がなく、且つWPで投稿した状態を正確にページ上で扱うことができるから使えたらいいのになぁ、でもどうせ無理なんだろうなぁ、解析とかめんどくさいなぁ、なんて思っていました。
で、今回、サイト自体の作成はWPを使ってクライアントがやるんだけど、ただWPでは実現できないような機能が欲しいという依頼が舞い込み、内容を聞いたら作れそうだったので受注をしました。
いざ作るとなった時に、WP側のデータも必要だったのでDB構造とか、値の種類とか、WP内の関数とか、スゲー調べました。
あっちこっち検索しながら、もう無理、とか思っていました。
で、ふと「WPで用意された関数が使えるとこんなことしなくてもいいのになぁ」という考えがよぎり、一応Google(神)で検索してみました。
すると、やっぱ同じようなことを考える人っているもんですね。
すぐにその方法が出てきました。以下にその方法を記述します。
【「wp-load.php」というファイルをrequireする】
これだけです。
これだけで、WPの関数が使用できるのです。なんて素敵。
ちなみに、この「wp-load.php」というファイルはWPをインストールしたディレクトリの直下にあります。
今回必要だったのは、「アイキャッチ画像」でした。
アイキャッチ画像とは、あまりWPが好きではないのでよく理解していないのですが、なんというか、記事を視覚的に表現するための画像、ってとこでしょうか。
例えば、記事を一覧で表示するときにサムネイルとかがあると分かり易いなぁ、なんて思った時にこれを設定すればそれが表示される、みたいな。
これ、最初見たときに単純にファイルが一つなんだろうな、と思っていました。
だからDB構造を確認してそこから画像のファイル名を取得すればイージーだと思っていたのですが、実はそれは違ったのです。
なんと、このアイキャッチ画像、色んなサイズが作られるんですね。大中小と正方形、横長、だったかな?よく覚えてないし覚える気もないから忘れてしまったけど。
そして、そのファイル名はDBに入っていないようなのです。
DBに登録されているのは元画像のファイル名で、アップするときに生成されたファイルは当然リネームしてどっかのディレクトリ内にあるとのこと。
さすがにそれを探して、そして更にファイル名の法則を解析するのは現実的ではないので、WPのページではどういう方法で出力しているのか、と確認した時にWPの関数を使っていることが分かったのです。
今回使った関数は「get_the_post_thumbnail」というものでした。
引数に記事のIDを指定し、サイズ等を指定すればimgタグで出力されるという関数です。
これで全てが解決できました。
なんか、WPっていろいろ余計な機能がついてますねぇ。
フルに使いこなせればそれなりに便利なんだろうけど、こっち側から言わせてもらうと中途半端にオリジナルっぽいことができるために使う側の要求レベルが高くなってWPもさらにいろいろできるようにスゲー複雑な構造になってきてるから、スゲー不便。
この複雑さは全然必要ない。そういうのはプラグインに任せればいいのに。
どうせフルに使いこなしている人なんてWP人口の中の一握りだよ。
こういうところがWPを好きになれない理由です。
盛り上がってきたからって調子乗っていろいろ機能を付けて頻繁なアップデートを繰り返す。調子乗るなっての。
汎用性やカスタマイズ性が高く、単純でバグもなく全てのブラウザ、デバイスに対応したサイトの基盤となるようなものを完璧に作ってくれたらスゲー使うのになぁ。
最後は愚痴になってしまいました。長文失礼しました。