TECHBLOG

WordPress > サイト毎の設定

WordPress 固定ページ設定

Create:

Update:

Category:WordPressサイト毎の設定

Series:WordPressサイト毎の設定

[ Version.19 ]

概要

特定の固定ページ設定。プラグインは使用しません。

functions.php には設定値のみ記載して functions_setup.php に記述しinclude。

functions.php

設定定数「CUSTOM_TAXONOMY」をfunctions.phpに記載します。

const PAGES_SETTING = [
	page_id => [
		'editor' => [
			'type' => 'classic',
			'tinymce' => [
				'link',
				'unlink',
				'|',
				'formatselect',
				'bullist',
				'numlist',
				'forecolor',
				'table'
			]
		],
	],
];
include_once 'xxx/functions_setup.php';

先ず page_id に固定ページのページID(int)を記載します。

editor

classic(クラッシックエディター)、gutenberg(ブロックエディター)から選択。

デフォルトは「classic」。※ advanced_custom_fields との相性が良いため

functions_setup.php

固定ページの共通設定を行います。

また、上記の設定定数を元に特定の固定ページのエディターを設定します。

※ あまり使用することはありません。

固定ページ一覧項目表示(共通設定)

設定値に関係なく共通の設定です。

add_filter('manage_pages_columns', function ($columns) {
	// remove default feild
	unset($columns['comments']);
	$add_columns = [];
	$add_columns['type'] = '種別';
	$add_columns['postname'] = 'SLUG';
	$add_columns['template'] = 'テンプレート';
	wp_oo_array_insert($columns, 2, $add_columns);
	return $columns;
});
add_action('manage_pages_custom_column', function ($column, $this_post_id) {
	$post = get_post($this_post_id);
	$postname = esc_attr($post->post_name);
	if ($column === 'type') {
		$add_page_id_arr = [];
		foreach (CUSTOM_POSTTYPE_FIXED as $v) {
			if (isset($v['add_page'])) {
				$add_page_id_arr = array_merge($add_page_id_arr, array_column($v['add_page'], 'page_id'));
			}
		}
		if (in_array($postname, array_keys(CUSTOM_TAXONOMY_FIXED))) {
			echo '非表示(階層設定用)';
		} elseif (strpos($postname, 'admin') === 0) {
			echo '管理画面';
		} elseif (strpos(basename(get_page_template()), 'redirect') === 0) {
			echo '非表示(階層設定用)';
		} else {
			$add = [];
			if ($postname !== esc_attr($post->post_title)) {
				$add[] = '管理画面';
			}
			if (in_array($post->ID, $add_page_id_arr)) {
				$add[] = 'ルーティング変更';
			}
			$add = $add ? '(' . join(' / ', $add) . ')' : '';
			echo '固定P' . $add;
		}
	} elseif ($column === 'postname') {
		echo $postname;
	} elseif ($column === 'template') {
		echo basename(get_page_template());
	}
}, 10, 2);

固定ページのエディター設定

設定方法が同じであるためカスタム投稿タイプ「classicエディターをデフォルト」の設定もここで行っています。

add_filter('use_block_editor_for_post', function ($use_block_editor, $this_post) {
	global $post_type;
	if (in_array($this_post->ID, array_keys(PAGES_SETTING_FIXED))) {
		if (isset(PAGES_SETTING_FIXED[$this_post->ID]['editor']['type']) && PAGES_SETTING_FIXED[$this_post->ID]['editor']['type'] === 'gutenberg') {
			return $use_block_editor;
		}
	} elseif (in_array($post_type, array_keys(CUSTOM_POSTTYPE_FIXED))) {
		if (isset(CUSTOM_POSTTYPE_FIXED[$post_type]['editor']['type']) && CUSTOM_POSTTYPE_FIXED[$post_type]['editor']['type'] === 'gutenberg') {
			return $use_block_editor;
		}
	} else {
		return false;
	}
}, 10, 2);
loading