カテゴリ:プログラミング
投稿日:2021年9月9日
WordPressサイトの設計手法
WordPress サイトは、タイトル、URL、投稿タイプ、分類、一覧と詳細、の5つの組み合わせで設計を行います。具体的には以下のような形です。
ID | タイトル | URL | 投稿タイプ | 分類 | 一覧・詳細 |
---|---|---|---|---|---|
1 | トップページ | / | page | single | |
2 | 会社案内 | /aboutus/ | page | single | |
3 | 経営理念 | /aboutus/philosophy/ | page | single | |
4 | お知らせ一覧 | /news/ | news | archive | |
5 | お知らせカテゴリ一覧 | /news/news_category/{$term}/ | news | news_category | archive |
6 | お知らせ詳細 | /news/{$post_id}/ | news | single |
投稿タイプの作成について、特に指定がない場合には、カスタム投稿、カスタム分類の作成は Custom Post Type UI( CPTUI ) というプラグインを用いて作成を行うと、エンジニアによる実装差異が生まれにくくなり保守効率が向上します。
カスタム投稿タイプの設計
CPTUIを用いてカスタム投稿タイプを設計する際に考慮することが多いポイントを解説。
- 公開の有無
投稿タイプに詳細ページを作成する際にはチェックを入れる - Archiveの有無
投稿タイプに一覧ページを作成する際には、チェックを入れる
RSSを利用した外部サイトとの連携
他サイトにカスタムフィールドやアイキャッチ画像を表示させるためにRSSのitem要素内に独自の要素を追加する
RSSを利用すれば、他のサイトにWordPressの投稿内容を表示させることが可能です。そのためには、カスタムフィールドの値やアイキャッチ画像のURLをRSSに含める必要がある場合があります。そんな時は、functions.php から RSS に任意の項目を追加することが可能です。フックの名前は rss2_item です。このアクションフック関数の中で標準出力に書けば RSS の item 要素の中に、任意の要素を追加できます。
function insert_element_to_feed()
{
global $post;
//ACFから画像を取得して追加
$logo = get_field('ACF画像');
$output = '<imageUrl>'. $logo['url'] .'</imageUrl>';
//アイキャッチ画像を追加
$thumbnail_ID = get_post_thumbnail_id( $post->ID );
$thumbnail = wp_get_attachment_image_src( $thumbnail_ID, 'medium' );
$output .= '<thumbnail>' . $thumbnail[0] . '</thumbnail>';
echo $output;
}
add_action('rss2_item', 'insert_element_to_feed');
表示時の使い方は、PHPの file_get_contents 関数で上記のRSSフィードを取得し、XMLとしてパースすれば配列データとして利用できます。