WEBLOG
WordPress > サイト毎の設定
特定の固定ページ設定。プラグインは使用しません。
functions.php には設定値のみ記載して functions_setup.php に記述しinclude。
設定定数「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)を記載します。
classic(クラッシックエディター)、gutenberg(ブロックエディター)から選択。
デフォルトは「classic」。※ advanced_custom_fields との相性が良いため
固定ページの共通設定を行います。
また、上記の設定定数を元に特定の固定ページのエディターを設定します。
※ あまり使用することはありません。
設定値に関係なく共通の設定です。
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);