ど素人から毛を生やす。<延>

カテゴリに画像設定したりURL作ったり

Web > WordPress > カテゴリー 2014年4月8日(最終更新:3年前)

このページは2014.4.8に作成されています。時代の流れとそぐわない可能性があったり、僕が今以上のど素人だった頃の記事だったりするので、新しい記事を探してみるのも良いかもしれません。

どもです。
最近のマイブームは人狼動画の餅。です。

ああいったゲームは見ている分には良いのですが、
実際にプレイするには脳みそが足りませんw

 

さて、今回はWordPressについてなのですが、
カテゴリスラッグを有効に使えばできることがぐっと増えると、最近わかりました。

条件分岐などがしたいなら、カテゴリIDやカテゴリ名を使えば充分ですし、そちらの方が表示させ易いですよね。
それでもスラッグを使いたいのは、「文字列がわかり易い」「半角英数字だから」です。

では、わかり易い半角英数字だから何になるのかといえば、答えは簡単。
URLになる。
これに尽きると思います。

ということで、具体的な使用例を以下に。

 

①カテゴリに画像がつけられる

MTではわりかし簡単にできる「カテゴリに画像」。
WordPressはデフォルトのカスタムフィールドが使いづらいので、実現しようと思えば
Advanced Custom Fieldsなどのプラグインに頼ることになります。

しかし、スラッグを使うことでプラグインを使わなくても実現できるのです。

<?php       $cat = get_the_category();
                   $cat = $cat[0];
                  $catslug = $cat->category_nicename; ?>
<img src="/img/category_image/<?php echo $catslug; ?>.jpg">

画像を入れるフォルダを定め、カテゴリスラッグ名の画像をサーバーに上げておけば、あとはこんな感じで記述すれば、記事のカテゴリに応じた画像を引っ張ってくることが可能です。

勿論、カテゴリ取得の方法を$category = get_category($cat);$catslug = $category->slug;にすれば、ループ外での使用もできます。

難点としては、カテゴリを変更するときサーバーの画像を入れ替える必要性があるというところです。

FTPが使えない環境の方が使う場合、素直にプラグインの方が良いかもしれません。

 

②リンクを誘導できる

「カテゴリのページ」へのリンクは簡単に飛ばすことができますが、例えば当サイトのように記事一覧ページを作り、選択しているカテゴリによって飛び先(ID指定)を変えたい場合、スラッグを使用することで楽に実現できます。

<?php       $cat = get_the_category();
                   $cat = $cat[0];
                  $catslug = $cat->category_nicename; ?>
<a href="/list/#list_<?php echo $catslug; ?>">リンクするお(・∀・)</a>

で、一覧側でも、get_categoryからの

<p id="list_<?php echo $category->category_nicename; ?>">リンクされるお(・∀・)</p>

でリンク先を作ることができます。

 

スラッグを使うことで、動的にURLを生成できるこの小技。
まだまだ使い道はありそうです。

 

おまけ

Advanced Custom Fieldsで画像を設定する方法が思いの外面倒だったので。

参考サイト様では返り値はIDを推奨していましたが、URLの方が楽かなぁと。
返り値をURLに設定した場合、

 <?php $cat = get_the_category(); $cat = $cat[0];
    $chekname= $cat->cat_name; $chekid = $cat->cat_ID;
    $post_id = 'category_'.$chekid;
    if( get_field('category_image',$post_id) ): ?>
<img src="<?php the_field('フィールド名',$post_id); ?>" >
<?php endif; ?>

これでおk。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった  (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)