« 塗りと枠 | メイン | order by をよく忘れる »

2019年01月30日

wordpressお勉強

うーん 避けてたがやらないとけなくなった。

テーマの名前などの情報 style.cssの頭のコメントにライセンスやテーマ名などなど書いてある。他のライセンスOKなテーマをコピーしてからちょいちょいと必要部分変更するとこから始めるればなんとかなりそう。




■表示されるまでに使用しようとするファイルについて

個別投稿表示 個別投稿ページの表示に使用されるテンプレートファイル。
 single-{post_type}.php
 single.php
 singular.php
 index.php


固定ページ
 カスタムテンプレートファイル - ページ作成画面の「テンプレート」ドロップダウンメニューで選択したテンプレート名。get_page_templates()参照。
 page-{slug}.php - 固定ページのスラッグが recent-news ならば WordPress は page-recent-news.php を探す。
 page-{id}.php - 固定ページIDが 6 ならば WordPress は page-6.php を探す。
 page.php
 singular.php
 index.php


一覧ページ(カテゴリぺーじ) category-{slug}.php - カテゴリーのスラッグが news ならば WordPress は category-news.php を探す。
category-{id}.php - カテゴリー ID が 6 ならば WordPress は category-6.php を探す。
category.php
archive.php
index.php





デフォルトにある通常の「投稿」は投稿タイプpostのもの。
固定ページはpageというタイプ。 この投稿タイプは増やせる。

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( // カスタム投稿タイプを定義するための関数
    'news', // カスタム投稿タイプ名
    array(
      'labels' => array(
        'name' => 'ニュース', //ダッシュボードに表示される名前
        'add_new_item' => 'ニュースを新規追加', // 新規追加画面に表示される名前
        'edit_item' => 'ニュースの編集', // 編集画面に表示される名前
      ),
      'public' => true, // ダッシュボードに表示するか否か
      'hierarchical' => true, // 階層型にするか否か
      'has_archive' => true, // アーカイブ(一覧表示機能)を持つか否か
      'supports' => array( // カスタム投稿ページに表示される項目
        'title', // タイトル ***カスタムフィールドだけにしたい場合は消しちゃう***
        //'editor', // 本文 ***カスタムフィールドだけにしたい場合は消しちゃう***
        'custom-fields', // カスタムフィールド
        //'thumbnail', // アイキャッチ画像 ***カスタムフィールドだけにしたい場合は消しちゃう***
      ),
      'menu_position' => 5, // ダッシュボードで投稿の下に表示
      'rewrite' => array('with_front' => true), // パーマリンクの編集(newsの前の階層URLを消して表示)
    )
  );
}

んで 登録項目(カスタム投稿)のカスタマイズは、自力でごりごりやるよりもアドオンを使います。
Advanced Custom Fieldsてのが定番なのかな? 

詳細は理解していないけど、どのカスタム投稿パターンに適応するのか、そしてなんの登録項目を管理画面からちょいちょいと登録できる。


固定ページはパーマリンクがあるのでそれでリンクできる。
一覧ページはどう作ったら良いのか・・・・

カスタムポストの一覧は通常は'has_archive'をtrueにしていればカスタム投稿タイプ名がURLの名前になる。
http://example.com/news/ カスタムタイプがnewsの場合

しかし、以下でさらにURL書き換えも可能

/* 投稿アーカイブページの作成 */
function post_has_archive( $args, $post_type ) {

	if ( 'post' == $post_type ) {
		$args['rewrite'] = true;
		$args['has_archive'] = 'blogs'; //任意のスラッグ名
	}
	return $args;

}
add_filter( 'register_post_type_args', 'post_has_archive', 10, 2 );
このあたりは設定をかえるだけでは変わらない。
これを記述後、管理画面の「設定」→「パーマリンク設定」→「変更を保存」をクリック



投稿後のデータの引っ張り出し方

とりあえずは詳細ページの場合 <?PHP print post_custom("カスタムフィールド名");?>でデータとれます


関係ないページで投稿一覧がほしい場合

$args = array('post_type' => 'news',  //カスタム投稿タイプ名 
	'orderby' => 'date', 
	'order' => 'DESC', 
	posts_per_page' => 10  //取得件数
);
$post_list = get_posts($args);
print_r($post_list);
foreach($post_list as $t_key => $t_dat){
	print_r(get_post_custom($t_dat->ID));
}

投稿者 muuming : 2019年01月30日 17:02