✏️ 编辑:admin.php
路径:
/virtual/emerald/public_html/emerald.jpn.com/wp2020/wp-content/themes/cocoon-master/lib/admin.php
大小:30.7 KB · 修改:2026-06-11 17:11:56 · 权限:0747 · 可写
← 返回目录
👁 查看
⬇ 下载
<?php //管理画面関係の関数 /** * Cocoon WordPress Theme * @author: yhira * @link: https://wp-cocoon.com/ * @license: http://www.gnu.org/licenses/gpl-2.0.html GPL v2 or later */ if ( !defined( 'ABSPATH' ) ) exit; //管理画面に読み込むリソースの設定 add_action('admin_print_styles', 'admin_print_styles_custom'); if ( !function_exists( 'admin_print_styles_custom' ) ): function admin_print_styles_custom() { //管理者以外にJetpackメニューを表示しない if (!is_user_administrator()) { echo '<style>#toplevel_page_jetpack{display:none;}</style>'; } if (is_admin_post_page() && !is_admin_editor_counter_visible()) { echo '<style>.editor-post-title::after{display:none !important;}</style>'; } //JetPackの統計ページでない時 //これをしないとなぜか以下のような不具合が出る //https://wp-cocoon.com/community/postid/76360/ if (is_admin_jetpack_stats_page()) return; if (!is_screen_editor_page()) { //管理用スタイル wp_enqueue_style( 'admin-style', get_cocoon_template_directory_uri().'/css/admin.css' ); } else { //ブロックエディターページやクラシックエディターページ全体に適用されるCSS wp_enqueue_style( 'editor-page-style', get_cocoon_template_directory_uri().'/css/editor-page.css' ); } //Font Awesome wp_enqueue_style_font_awesome(); //IcoMoon wp_enqueue_style_icomoon(); //カラーピッカー wp_enqueue_style( 'wp-color-picker' ); //メディアアップローダの javascript API wp_enqueue_media(); // /////////////////////////////////// // //Swiper // /////////////////////////////////// // wp_enqueue_swiper(); /////////////////////////////////////// // 管理画面でのJavaScript読み込み /////////////////////////////////////// //管理画面用での独自JavaScriptの読み込み wp_enqueue_script( 'admin-javascript', get_cocoon_template_directory_uri() . '/js/admin-javascript.js', array(), false, true ); //投稿ページの場合 if (is_admin_post_page()) { //投稿時に記事公開確認ダイアログ処理 wp_enqueue_confirmation_before_publish(); } if (is_admin_php_page()) { //IcoMoonの呼び出し wp_enqueue_style_icomoon(); //ソースコードハイライトリソースの読み込み wp_enqueue_highlight_js(); //画像リンク拡大効果がLightboxのとき wp_enqueue_lightbox(); //画像リンク拡大効果がLityのとき wp_enqueue_lity(); //画像リンク拡大効果がbaguetteboxのとき wp_enqueue_baguettebox(); //画像リンク拡大効果がspotlightのとき wp_enqueue_spotlight(); //カルーセル用 wp_enqueue_slick(); //タイルカード wp_enqueue_jquery_masonry(); //Google Fonts wp_enqueue_google_fonts(); } } endif; //メディアを挿入の初期表示を「この投稿へのアップロード」にする // add_action( 'admin_footer-post-new.php', 'customize_initial_view_of_media_uploader' ); // add_action( 'admin_footer-post.php', 'customize_initial_view_of_media_uploader' ); if ( !function_exists( 'customize_initial_view_of_media_uploader' ) ): function customize_initial_view_of_media_uploader() { echo "<script type='text/javascript'> //<![CDATA[ jQuery(function($) { $('#wpcontent').ajaxSuccess(function() { $('select.attachment-filters [value=\"uploaded\"]').attr( 'selected', true ).parent().trigger('change'); }); }); //]]> </script>"; } endif; //投稿記事一覧にアイキャッチ画像を表示 //カラムの挿入 add_filter( 'manage_posts_columns', 'customize_admin_manage_posts_columns' ); add_filter( 'manage_pages_columns', 'customize_admin_manage_posts_columns' ); if ( !function_exists( 'customize_admin_manage_posts_columns' ) ): function customize_admin_manage_posts_columns($columns) { // 現在の画面オブジェクトを取得 $current_screen = get_current_screen(); $is_block_screen = ($current_screen && $current_screen->id === 'edit-wp_block'); // WordPress標準カラムを削除 $remove_columns = [ 'author' => !is_admin_list_author_visible(), 'categories' => !is_admin_list_categories_visible(), 'tags' => !is_admin_list_tags_visible(), 'comments' => !is_admin_list_comments_visible(), 'date' => !is_admin_list_date_visible(), ]; foreach ($remove_columns as $key => $condition) { if ($condition && isset($columns[$key])) { unset($columns[$key]); } } // 独自カラムを追加 $add_columns = [ 'post-id' => ['label' => __( 'ID', THEME_NAME ), 'condition' => is_admin_list_post_id_visible()], 'word-count' => ['label' => __( '文字数', THEME_NAME ), 'condition' => is_admin_list_word_count_visible()], 'pv' => ['label' => __( 'PV', THEME_NAME ), 'condition' => is_admin_list_pv_visible() && !$is_block_screen], 'thumbnail' => ['label' => __( 'アイキャッチ', THEME_NAME ), 'condition' => is_admin_list_eyecatch_visible() && !$is_block_screen], 'memo' => ['label' => __( 'メモ', THEME_NAME ), 'condition' => is_admin_list_memo_visible() && !$is_block_screen], ]; foreach ($add_columns as $key => $data) { if (!empty($data['condition'])) { $columns[$key] = $data['label']; } } return $columns; } endif; //管理画面の記事一覧テーブルにサムネイルの挿入 add_action( 'manage_posts_custom_column', 'customize_admin_add_column', 10, 2 ); add_action( 'manage_pages_custom_column', 'customize_admin_add_column', 10, 2 ); if ( !function_exists( 'customize_admin_add_column' ) ): function customize_admin_add_column($column_name, $post_id) { //投稿ID if ( is_admin_list_post_id_visible() && ('post-id' === $column_name) ) { $thum = $post_id; } //文字数表示 if ( is_admin_list_word_count_visible() && ('word-count' === $column_name) ) { //テーマで設定されているサムネイルを利用する場合 $post = get_post($post_id); $title_count = mb_strlen(strip_tags($post->post_title)); $content_count = get_post_content_word_count($post->post_content); $thum = '<div class="word-count-wrap">'. '<div class="word-count-title">'. '<span class="word-count-title-label">'. __( ' 題:', THEME_NAME ). '</span>'. '<span class="word-count-title-count">'. sprintf( '%s', $title_count ). '</span>'. '</div>'. '<div class="word-count-coutent">'. '<span class="word-count-coutent-label">'. __( '本文:', THEME_NAME ). '</span>'. '<span class="word-count-coutent-count">'. sprintf( '%s', $content_count ). '</span>'. '</div>'. '</div>'; } //PV表示 if ( is_admin_list_pv_visible() && ('pv' === $column_name) ) { $thum = '<div class="pv-wrap">'. '<div class="pv-title">'. '<span class="pv-title-label">'. __( '日:', THEME_NAME ). '</span>'. '<span class="pv-title-count">'. get_todays_pv(). '</span>'. '</div>'. '<div class="pv-title">'. '<span class="pv-title-label">'. __( '週:', THEME_NAME ). '</span>'. '<span class="pv-title-count">'. get_last_7days_pv(). '</span>'. '</div>'. '<div class="pv-title">'. '<span class="pv-title-label">'. __( '月:', THEME_NAME ). '</span>'. '<span class="pv-title-count">'. get_last_30days_pv(). '</span>'. '</div>'. '<div class="pv-title">'. '<span class="pv-title-label">'. __( '全:', THEME_NAME ). '</span>'. '<span class="pv-title-count">'. get_all_pv(). '</span>'. '</div>'. '</div>'; } //アイキャッチ表示 if ( is_admin_list_eyecatch_visible() && ('thumbnail' === $column_name) ) { //テーマで設定されているサムネイルを利用する場合 $thum = get_the_post_thumbnail($post_id, THUMB150, array( 'style' => 'width:75px;height:auto;' )); } //メモ表示 if ( is_admin_list_memo_visible() && ('memo' === $column_name) ) { //テーマで設定されているサムネイルを利用する場合 $thum = htmlspecialchars(get_the_page_memo($post_id)); } if ( isset($thum) && $thum ) { echo $thum; } } endif; //投稿・固定ページ管理画面の記事一覧テーブルにIDソートを可能にする add_filter( 'manage_edit-post_sortable_columns', 'sort_post_columns' );//投稿 add_filter( 'manage_edit-page_sortable_columns', 'sort_post_columns' );//固定ページ if ( !function_exists( 'sort_post_columns' ) ): function sort_post_columns($columns) { $columns['post-id'] = 'ID'; return $columns; } endif; //カテゴリー・タグ管理画面にIDカラムを設置する add_filter('manage_edit-category_columns', 'add_taxonomy_columns'); add_filter('manage_edit-post_tag_columns', 'add_taxonomy_columns'); if ( !function_exists( 'add_taxonomy_columns' ) ): function add_taxonomy_columns($columns){ $index = 4; // 追加位置 return array_merge( array_slice($columns, 0, $index), array('id' => 'ID'), array_slice($columns, $index) ); } endif; //カテゴリー・タグ管理画面にIDを表示 add_action('manage_category_custom_column', 'add_taxonomy_custom_fields', 10, 3); add_action('manage_post_tag_custom_column', 'add_taxonomy_custom_fields', 10, 3); if ( !function_exists( 'add_taxonomy_custom_fields' ) ): function add_taxonomy_custom_fields($content, $column_name, $term_id){ if ( 'id' === $column_name ) { $content = $term_id; } return $content; } endif; //カテゴリー・タグ管理画面にIDソートを可能にする add_filter( 'manage_edit-category_sortable_columns', 'sort_term_columns' ); add_filter( 'manage_edit-post_tag_sortable_columns', 'sort_term_columns' ); if ( !function_exists( 'sort_term_columns' ) ): function sort_term_columns($columns) { $columns['id'] = 'ID'; return $columns; } endif; //パターン管理画面にIDカラムを設置する add_filter('manage_edit-wp_block_columns', 'add_wp_block_columns'); if ( !function_exists( 'add_wp_block_columns' ) ): function add_wp_block_columns($columns){ $index = 5; // 追加位置 return array_merge( array_slice($columns, 0, $index), array('shortcode' => __( 'ショートコード', THEME_NAME )), array_slice($columns, $index) ); } endif; //ショートコード管理画面にIDを表示 add_action('manage_wp_block_posts_custom_column', 'add_wp_block_custom_fields', 10, 2); if ( !function_exists( 'add_wp_block_custom_fields' ) ): function add_wp_block_custom_fields($column_name, $term_id){ if ( 'shortcode' === $column_name ) { $thum = '<input type="text" size="16" value="[pattern id="'.esc_attr($term_id).'"]">'; } if ( isset($thum) && $thum ) { echo $thum; } } endif; /** * パターン管理画面のカテゴリーカラムをソート可能にする */ add_filter( 'manage_edit-wp_block_sortable_columns', 'customize_wp_block_sortable_columns' ); if ( !function_exists( 'customize_wp_block_sortable_columns' ) ): function customize_wp_block_sortable_columns( $columns ) { $columns['taxonomy-wp_pattern_category'] = 'pattern_category'; return $columns; } endif; /** * パターン管理画面のカテゴリーソート処理 */ add_action( 'pre_get_posts', 'customize_wp_block_category_sort' ); if ( !function_exists( 'customize_wp_block_category_sort' ) ): function customize_wp_block_category_sort( $query ) { if ( !is_admin() || !$query->is_main_query() ) { return; } // 対象のポストタイプとソートキーを確認 if ( $query->get( 'post_type' ) === 'wp_block' && $query->get( 'orderby' ) === 'pattern_category' ) { add_filter( 'posts_clauses', 'customize_wp_block_category_sort_clauses', 10, 2 ); } } endif; /** * カテゴリー名でソートするためのSQLクエリを構築する */ if ( !function_exists( 'customize_wp_block_category_sort_clauses' ) ): function customize_wp_block_category_sort_clauses( $clauses, $query ) { global $wpdb; // ソート順を取得 $order = strtoupper( $query->get( 'order' ) ) === 'ASC' ? 'ASC' : 'DESC'; // カテゴリーテーブルをジョイン $clauses['join'] .= " LEFT JOIN {$wpdb->term_relationships} AS tr ON ({$wpdb->posts}.ID = tr.object_id) LEFT JOIN {$wpdb->term_taxonomy} AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'wp_pattern_category') LEFT JOIN {$wpdb->terms} AS t ON (tt.term_id = t.term_id) "; // ソート順序を指定 $clauses['orderby'] = "t.name {$order}"; // グループ化して重複を避ける $clauses['groupby'] = "{$wpdb->posts}.ID"; return $clauses; } endif; //管理ツールバーにメニュー追加 if (is_admin_tool_menu_visible() && is_user_administrator()) { add_action('admin_bar_menu', 'customize_admin_bar_menu', 9999); } if ( !function_exists( 'customize_admin_bar_menu' ) ): function customize_admin_bar_menu($wp_admin_bar){ // 管理メニューを取得 $menus = get_admin_bar_menu_array($wp_admin_bar); // 管理メニューを追加 foreach ($menus as $menu) { if ($menu) { $wp_admin_bar->add_menu($menu); } } } endif; // 管理メニュー配列 if ( !function_exists( 'get_admin_bar_menu_array' ) ): function get_admin_bar_menu_array($wp_admin_bar = null) { $title = '<span class="ab-label">' . __('管理メニュー', THEME_NAME) . '</span>'; $menus = [ // 親メニュー ['id' => 'dashboard_menu', 'meta' => [] ,'title' => $title], // 子メニュー ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-dashboard' , 'meta' => [], 'title' => __('ダッシュボード', THEME_NAME) , 'href' => admin_url()], ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-singles' , 'meta' => [], 'title' => __('投稿一覧', THEME_NAME) , 'href' => admin_url('edit.php')], ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-pages' , 'meta' => [], 'title' => __('固定ページ一覧', THEME_NAME) , 'href' => admin_url('edit.php?post_type=page')], ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-medias' , 'meta' => [], 'title' => __('メディア一覧', THEME_NAME) , 'href' => admin_url('upload.php')], ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-themes' , 'meta' => [], 'title' => __('テーマ', THEME_NAME) , 'href' => admin_url('themes.php')], ]; // パターン一覧 if (!is_classicpress()) { $menus[] = ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-patterns', 'meta' => [], 'title' => __('パターン一覧', THEME_NAME), 'href' => admin_url('edit.php?post_type=wp_block')]; } // 残りの子メニュー $menus = array_merge($menus, [ ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-customize' , 'meta' => [], 'title' => __('カスタマイズ', THEME_NAME) , 'href' => admin_url('customize.php?return=' . esc_url(admin_url('themes.php')))], ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-widget' , 'meta' => [], 'title' => __('ウィジェット', THEME_NAME) , 'href' => admin_url('widgets.php')], ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-nav-menus' , 'meta' => [], 'title' => __('メニュー', THEME_NAME) , 'href' => admin_url('nav-menus.php')], ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-theme-editor', 'meta' => [], 'title' => __('テーマの編集', THEME_NAME) , 'href' => admin_url('theme-editor.php')], ['parent' => 'dashboard_menu', 'id' => 'dashboard_menu-plugins' , 'meta' => [], 'title' => __('プラグイン一覧', THEME_NAME) , 'href' => admin_url('plugins.php')], ]); // 管理者権限があれば追加 if (current_user_can('manage_options')) { $definitions = get_cocoon_original_menu_definitions(); foreach ($definitions as $slug => $info) { $menus[] = [ 'parent' => 'dashboard_menu', 'id' => "dashboard_menu-{$slug}", 'title' => isset($info['title']) ? $info['title'] : '', 'href' => admin_url("admin.php?page={$slug}"), ]; } } return apply_filters('cocoon_admin_bar_menus', $menus, $wp_admin_bar); } endif; //投稿一覧リストの上にタグフィルターと管理者フィルターを追加する add_action('restrict_manage_posts', 'custmuize_restrict_manage_posts'); if ( !function_exists( 'custmuize_restrict_manage_posts' ) ): function custmuize_restrict_manage_posts(){ global $post_type, $tag; if (($post_type == 'post') || ($post_type == 'page')) { if ( is_object_in_taxonomy( $post_type, 'post_tag' ) ) { $dropdown_options = array( 'show_option_all' => get_taxonomy( 'post_tag' )->labels->all_items, 'hide_empty' => 0, 'hierarchical' => 1, 'show_count' => 0, 'orderby' => 'name', 'selected' => $tag, 'name' => 'tag', 'taxonomy' => 'post_tag', 'value_field' => 'slug' ); wp_dropdown_categories( $dropdown_options ); } wp_dropdown_users( array( 'show_option_all' => 'すべてのユーザー', 'name' => 'author', 'capability' => 'edit_posts' ) ); } } endif; //投稿一覧で「全てのタグ」選択時は$_GET['tag']をセットしない add_action('load-edit.php', 'custmuize_load_edit_php'); if ( !function_exists( 'custmuize_load_edit_php' ) ): function custmuize_load_edit_php(){ if (isset($_GET['tag']) && '0' === $_GET['tag']) { unset ($_GET['tag']); } } endif; //テーマ変更時にテーマカスタマイザーCSSファイルの書き出し add_action( 'after_switch_theme', function() { put_theme_css_cache_file(); }); //投稿管理画面のヘッダーカスタマイズ add_action( 'admin_head-post-new.php', 'add_head_post_custum' ); add_action( 'admin_head-post.php', 'add_head_post_custum' ); add_action( 'admin_head-widgets.php', 'add_head_post_custum' ); if ( !function_exists( 'add_head_post_custum' ) ): function add_head_post_custum() { //カスタムCSSスタイルが反映されていない場合は反映させる define('OP_LAST_OUTPUT_EDITOR_CSS_DAY', 'last_output_editor_css_day'); $day = get_theme_mod(OP_LAST_OUTPUT_EDITOR_CSS_DAY); $now = date('Y-m-d H:i:s'); if (!$day || strtotime($day) < strtotime('-7 day') ) { set_theme_mod(OP_LAST_OUTPUT_EDITOR_CSS_DAY, $now); // エディター用のカスタマイズCSS出力 put_theme_css_cache_file(); // var_dump(strtotime($day)); // var_dump(strtotime('-7 day')); // var_dump($day); // var_dump(date('Y-m-d H:i:s', strtotime('-7 day'))); // var_dump($now); } ?> <script type="text/javascript"> jQuery(function($) { function zenToHan(text) { return text.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 65248); }); } function catFilter( header, list ) { var form = $('<form>').attr({'class':'filterform', 'action':'#'}).css({'position':'absolute', 'top':'38px'}), input = $('<input>').attr({'class':'filterinput', 'type':'text', 'placeholder':'<?php _e( 'カテゴリー検索', THEME_NAME ) ?>' }); $(form).append(input).appendTo(header); $(header).css({'padding-top':'42px'}); $(input).change(function() { var filter = $(this).val(); filter = zenToHan(filter).toLowerCase(); if( filter ) { //ラベルテキストから検索文字の見つからなかった場合は非表示 $(list).find('label').filter( function (index) { var labelText = zenToHan($(this).text()).toLowerCase(); return labelText.indexOf(filter) == -1; } ).hide(); //ラベルテキストから検索文字の見つかった場合は表示 $(list).find('label').filter( function (index) { var labelText = zenToHan($(this).text()).toLowerCase(); return labelText.indexOf(filter) != -1; } ).show(); } else { $(list).find('label').show(); } return false; }) .keyup(function() { $(this).change(); }); } $(function() { catFilter( $('#category-all'), $('#categorychecklist') ); }); }); </script> <?php } endif; //デフォルトの抜粋入力欄をビジュアルエディターにする // add_action( 'add_meta_boxes', array ( 'VisualEditorExcerpt', 'switch_boxes' ) ); if ( !class_exists( 'VisualEditorExcerpt' ) ): class VisualEditorExcerpt{ public static function switch_boxes() { if ( isset($GLOBALS['post']) && ! post_type_supports( $GLOBALS['post']->post_type, 'excerpt' ) ) { return; } $current_screen = get_current_screen(); if ( ( method_exists( $current_screen, 'is_block_editor' ) && $current_screen->is_block_editor() ) || ( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() ) ) { } else { remove_meta_box( 'postexcerpt' // ID , '' // スクリーン、空だと全ての投稿タイプをサポート , 'normal' // コンテキスト ); add_meta_box( 'postexcerpt2' // Reusing just 'postexcerpt' doesn't work. , __( 'Excerpt' ) // タイトル , array ( __CLASS__, 'show' ) // 表示関数 , null // スクリーン , 'normal' // コンテキスト , 'core' // 優先度 ); } } //メタボックスの出力 public static function show( $post ) { ?> <label class="screen-reader-text" for="excerpt"><?php _e( 'Excerpt' ) ?></label> <?php //デフォルト名の'excerpt'を使用 wp_editor( self::unescape( $post->post_excerpt ), 'excerpt', array ( 'textarea_rows' => 15 , 'media_buttons' => false , 'teeny' => true , 'tinymce' => true ) ); } //エスケープ解除 public static function unescape( $str ) { return str_replace( array ( '<', '>', '"', '&', ' ', '&nbsp;' ) , array ( '<', '>', '"', '&', ' ', ' ' ) , $str ); } } endif; //テーマの編集機能で編集できるファイルを追加する wp4.4以降 add_filter('wp_theme_editor_filetypes', 'wp_theme_editor_filetypes_custom'); if ( !function_exists( 'wp_theme_editor_filetypes_custom' ) ): function wp_theme_editor_filetypes_custom($default_types){ $default_types[] = 'js'; $default_types[] = 'scss'; return $default_types; } endif; //ビジュアルエディターのクラス名に任意のclassを追加する //add_filter( 'teeny_mce_before_init', 'abc' ); add_filter( 'tiny_mce_before_init', 'tiny_mce_before_init_custom' ); if ( !function_exists( 'tiny_mce_before_init_custom' ) ): function tiny_mce_before_init_custom( $mceInit ) { //var_dump($mceInit ); //旧ビジュアルエディター if (isset($mceInit['body_class'])) { //if (!is_plugin_fourm_page()) { $fa_class = ' '.get_site_icon_font_class(); $mceInit['body_class'] .= ' body main article'.$fa_class.get_editor_page_type_class(); //} if (is_admin()) { $mceInit['body_class'] .= ' admin-page'; } else { $mceInit['body_class'] .= ' public-page'; } if (get_site_font_family_class()) { $mceInit['body_class'] .= ' '.get_site_font_family_class(); } if (get_site_font_size_class()) { $mceInit['body_class'] .= ' '.get_site_font_size_class(); } if (get_site_font_weight_class()) { $mceInit['body_class'] .= ' '.get_site_font_weight_class(); } } return $mceInit; } endif; //無害化したプレビューのテンプレートファイル呼び出し if ( !function_exists( 'get_sanitize_preview_template_part' ) ): function get_sanitize_preview_template_part($slug, $name = null){ restore_global_skin_theme_options(); // global $_THEME_OPTIONS; // _v($_THEME_OPTIONS); // プレビュー中は外部リクエスト・DB書き込みを発生させるブロックを空出力にする // (core/rss が fetch_feed() → set_site_transient() → add_option() を呼び出し DB エラーになるのを防ぐ) // cocoon-blocks/embed-blogcard も外部 OGP 取得(wp_remote_get)を行うため対象に含める $skip_external_blocks = function( $pre_render, $parsed_block ) { $external_blocks = array( 'core/rss', 'core/embed', 'cocoon-blocks/embed-blogcard' ); if ( in_array( $parsed_block['blockName'], $external_blocks, true ) ) { return ''; } return $pre_render; }; add_filter( 'pre_render_block', $skip_external_blocks, 10, 2 ); // try/finally で例外・wp_die 発生時もフィルターを確実に除去する try { ob_start(); cocoon_template_part($slug, $name); $tag = ob_get_clean(); } finally { remove_filter( 'pre_render_block', $skip_external_blocks, 10 ); } $tag = preg_replace('{<form.+?</form>}is', '', $tag); $tag = change_fa($tag); echo $tag; clear_global_skin_theme_options(); } endif; // テーマが指定するプレビュー画面かどうか // if ( !function_exists( 'is_cocoon_settings_preview' ) ): // function is_cocoon_settings_preview(){ // return isset($_GET['preview']) && $_GET['preview'] == 'theme-settings'; // } // endif; //グーテンベルグとクラシックエディターのタグをチェックリストボックス形式にする //参考:https://nldot.info/how-to-change-the-tags-to-checkbox-in-gutenberg/ if (is_editor_tag_check_list_enable()) { add_action( 'init', 'register_tag_check_list', 1 ); } if ( !function_exists( 'register_tag_check_list' ) ): function register_tag_check_list() { $tag_slug_args = get_taxonomy('post_tag'); // returns an object $tag_slug_args->hierarchical = true; $tag_slug_args->meta_box_cb = 'post_categories_meta_box'; register_taxonomy( 'post_tag', 'post',(array) $tag_slug_args); } endif; //タグ選択をチェックリスト形式にした場合、一覧・編集画面では階層化プロパティを元のfalseに戻すことで、不要な「親ターム」や「色」の出力を防ぐ add_action('current_screen', 'disable_post_tag_hierarchical_on_term_screens'); if ( !function_exists( 'disable_post_tag_hierarchical_on_term_screens' ) ): function disable_post_tag_hierarchical_on_term_screens($screen) { if ( function_exists('is_editor_tag_check_list_enable') && is_editor_tag_check_list_enable() ) { if ( isset($screen->taxonomy) && $screen->taxonomy === 'post_tag' && in_array($screen->base, array('edit-tags', 'term')) ) { $tax = get_taxonomy('post_tag'); if ($tax) { $tax->hierarchical = false; } } } } endif; //管理画面のbodyタグのクラスに挿入 add_filter('admin_body_class', 'add_custom_admin_body_class'); function add_custom_admin_body_class($classes) { $classes .= ' classicpress'; return $classes; } // ブロックエディター用フォント設定(iframe 内に注入) // WP 6.3+ では enqueue_block_assets が iframe 内で実行されるため、 // admin_head で div.editor-block-list__block を対象にしていた旧方式を置き換える add_action( 'enqueue_block_assets', 'cocoon_enqueue_editor_font_styles' ); if ( !function_exists( 'cocoon_enqueue_editor_font_styles' ) ): function cocoon_enqueue_editor_font_styles() { // 管理画面以外では実行しない if ( !is_admin() ) return; // フォントファミリーのキー文字列から CSS の font-family 値への変換マップ // _font.scss のクラス定義と対応させる $font_family_map = array( 'meiryo' => 'Meiryo, "Hiragino Kaku Gothic ProN", "Hiragino Sans", sans-serif', 'yu_gothic' => 'YuGothic, "Yu Gothic", Meiryo, "Hiragino Kaku Gothic ProN", "Hiragino Sans", sans-serif', 'ms_pgothic' => '"MS PGothic", "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif', 'noto_sans_jp' => '"Noto Sans JP", sans-serif', 'noto_serif_jp' => '"Noto Serif JP", sans-serif', 'mplus_1p' => '"M PLUS 1p", sans-serif', 'rounded_mplus_1c' => '"M PLUS Rounded 1c", sans-serif', 'kosugi' => '"Kosugi", sans-serif', 'kosugi_maru' => '"Kosugi Maru", sans-serif', 'sawarabi_gothic' => '"Sawarabi Gothic", sans-serif', 'sawarabi_mincho' => '"Sawarabi Mincho", sans-serif', 'noto_sans_korean' => '"Noto Sans KR", sans-serif', 'pretendard' => '"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif', 'microsoft_jhenghei' => '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Microsoft JhengHei", sans-serif', 'noto_sans_tc' => '"Noto Sans TC", sans-serif', // hiragino はブラウザデフォルトと同等なのでマップに含めない(空の扱い) ); // フォント設定値を配列に集める $rules = array(); if ( get_site_font_size() ) { $rules[] = 'font-size: ' . esc_attr( get_site_font_size() ) . ';'; } // フォントファミリーはキー値を CSS の font-family 値に変換して出力する $font_family_key = get_site_font_family(); if ( $font_family_key && isset( $font_family_map[ $font_family_key ] ) ) { $rules[] = 'font-family: ' . $font_family_map[ $font_family_key ] . ';'; } if ( get_site_font_weight() ) { $rules[] = 'font-weight: ' . esc_attr( get_site_font_weight() ) . ';'; } // フォント設定がなければ何もしない if ( empty( $rules ) ) return; // .editor-styles-wrapper はブロックエディター iframe 内のコンテンツ領域のラッパー $css = '.editor-styles-wrapper, .editor-styles-wrapper p { ' . implode( ' ', $rules ) . ' }'; // ダミーハンドルにインライン CSS を付加して iframe 内の <style> として出力 wp_register_style( 'cocoon-editor-font-inline', false, array(), false ); wp_enqueue_style( 'cocoon-editor-font-inline' ); wp_add_inline_style( 'cocoon-editor-font-inline', $css ); } endif; // ブロックエディター内の文字数カウンター非表示(iframe 内に注入) // admin_print_styles での外側注入は WP 7.0 の iframe 内に届かないため、 // enqueue_block_assets で補完する add_action( 'enqueue_block_assets', 'cocoon_enqueue_editor_counter_style' ); if ( !function_exists( 'cocoon_enqueue_editor_counter_style' ) ): function cocoon_enqueue_editor_counter_style() { // 管理画面以外では実行しない if ( !is_admin() ) return; // 投稿編集画面以外では実行しない if ( !is_admin_post_page() ) return; // カウンター表示設定がオンなら何もしない if ( is_admin_editor_counter_visible() ) return; // 文字数カウンターの疑似要素を非表示にする CSS wp_register_style( 'cocoon-editor-counter-hide', false, array(), false ); wp_enqueue_style( 'cocoon-editor-counter-hide' ); wp_add_inline_style( 'cocoon-editor-counter-hide', '.editor-post-title::after { display: none !important; }' ); } endif;
💾 保存
取消
保存为 UTF-8,换行统一为 LF