11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【WordPress】エディタカスタマイズ

Last updated at Posted at 2019-05-23

エディタのbodyにclass指定

/*-------------------------------------------------------
エディタのbodyにclass指定
--------------------------------------------------------*/
function my_tiny_mce_before_init( $init_array ) {
	global $post;
	global $post_type;

	///ページ名を調べる
	$pagename = $post->post_name;

	$init_array['body_class'] = 'post-' . $post->ID . ' ' . $post_type .'-'.$pagename;
	return $init_array;
}
add_filter('tiny_mce_before_init', 'my_tiny_mce_before_init');

投稿画面にフロントのスタイルシート適用

概要

投稿画面にフロントのスタイルシート適用させて、投稿画面とフロント画面の見た目の差を無くす。

施策

/*--------------------------------------------------------
投稿画面にフロントのスタイルシート適用
--------------------------------------------------------*/
function my_theme_add_editor_styles() {
	add_editor_style( get_template_directory_uri() . '/css/editor.css' );
}
add_action( 'after_setup_theme', 'my_theme_add_editor_styles' );

ビジュアルエディタの余計な機能を無効化

概要

ビジュアルエディタの余計な機能を無効化

施策

/*-----------------------------------------
ビジュアルエディタの余計な機能を無効化する
-----------------------------------------*/
function override_mce_options( $init_array ) {
    global $allowedposttags;

    $init_array['valid_elements']          = '*[*]';
    $init_array['extended_valid_elements'] = '*[*]';
    $init_array['valid_children']          = '+a[' . implode( '|', array_keys( $allowedposttags ) ) . ']';
    $init_array['indent']                  = true;
    $init_array['wpautop']                 = false;
    $init_array['force_p_newlines']        = false;

    return $init_array;
}

add_filter( 'tiny_mce_before_init', 'override_mce_options' );

解説

オプション 説明
valid_elements 全てのタグと属性値を許可
extended_valid_elements 既存設定に追加されている全てのタグと属性値を許可

記事内にスタイルシート入力を許可

/*--------------------------------------------------------
記事内にスタイルシート入力を許可
--------------------------------------------------------*/
function my_can_tinymce_tag($in) {
	$in['valid_children'] = '+body[style]';
	return $in;
}
add_filter('tiny_mce_before_init', 'my_can_tinymce_tag' );

Tiny MCEのフォント指定をptからpxに変更する

概要

Tiny MCEのフォント指定をptからpxに変更する

施策

/*--------------------------------------------------------
Customize mce editor font sizes
--------------------------------------------------------*/
if ( ! function_exists( 'wpex_mce_text_sizes' ) ) {
	function wpex_mce_text_sizes( $initArray ){
		$initArray['fontsize_formats'] = "9px 10px 11px 12px 13px 14px 15px 16px 17px 18px 19px 20px 22px 24px 26px 28px 30px 32px 34px 36px";
		return $initArray;
	}
}
add_filter( 'tiny_mce_before_init', 'wpex_mce_text_sizes' );

TinyMCE追加用のスタイルを初期化

概要

TinyMCE追加用のスタイルを初期化

施策

php

/*--------------------------------------------------------
//TinyMCE追加用のスタイルを初期化
--------------------------------------------------------*/
if ( !function_exists( 'initialize_tinymce_styles' ) ):
	function initialize_tinymce_styles($init_array) {
		//追加するスタイルの配列を作成
		$style_formats = array(
			array(
				'title' => 'テキスト青色',
				'inline' => 'span',
				'classes' => 'txt_blue'
			)
		);
		//JSONに変換
		$init_array['style_formats'] = json_encode($style_formats);
		return $init_array;
	}
endif;
add_filter('tiny_mce_before_init', 'initialize_tinymce_styles', 10000);

//TinyMCEにスタイルセレクトボックスを追加
if ( !function_exists( 'add_styles_to_tinymce_buttons' ) ):
	function add_styles_to_tinymce_buttons($buttons) {
		//見出しなどが入っているセレクトボックスを取り出す
		$temp = array_shift($buttons);
		//先頭にスタイルセレクトボックスを追加
		array_unshift($buttons, 'styleselect');
		//先頭に見出しのセレクトボックスを追加
		array_unshift($buttons, $temp);

		return $buttons;
	}
endif;
add_filter('mce_buttons_2','add_styles_to_tinymce_buttons');


ビジュアルエディタにHTMLを直挿入するためのボタンを追加

概要

ビジュアルエディタにHTMLを直挿入するためのボタンを追加

施策

php

/*--------------------------------------------------------
// ビジュアルエディタにHTMLを直挿入するためのボタンを追加
--------------------------------------------------------*/
function add_insert_html_button( $buttons ) {
	$buttons[] = 'button_insert_html';
	$buttons[] = 'button_insert_html2';
	$buttons[] = 'button_insert_html3';
	$buttons[] = 'button_insert_html4';
	$buttons[] = 'button_insert_html5';
	$buttons[] = 'button_insert_html6';
	$buttons[] = 'button_insert_html7';
	return $buttons;
}
add_filter( 'mce_buttons', 'add_insert_html_button' );

function add_insert_html_button_plugin( $plugin_array ) {
	$plugin_array['custom_button_script'] =  get_stylesheet_directory_uri() . "/assets/js/editor.js";
	return $plugin_array;
}
add_filter( 'mce_external_plugins', 'add_insert_html_button_plugin' );

editor.js

(function() {
    tinymce.create('tinymce.plugins.MyButtons', {
        init : function(ed, url) {
            ////ボタン設定/////////////////////////
            ed.addButton( 'button_insert_html', {
                title : '大ボタン',
                image : url + '/ico_btn_l.svg',
                cmd: 'button_insert_html_cmd'
            });
            // ボタンの動作
            ed.addCommand( 'button_insert_html_cmd', function() {
                var selected_text = ed.selection.getContent();
                var return_text = '<a href="" class="btn_sty01 big_btn">' + selected_text + '</a>';
                ed.execCommand('mceInsertContent', 0, return_text);
            });
        },
        createControl : function(n, cm) {
            return null;
        }
    });
	/// Start the buttons
    tinymce.PluginManager.add( 'custom_button_script', tinymce.plugins.MyButtons );
})();

TinyMCE Templates をAdvance Custom Fieldに適用

概要

TinyMCE Templates をAdvance Custom Fieldに適用

施策

/*-------------------------------------------------------
TinyMCE Templates をAdvance Custom Fieldに適用
--------------------------------------------------------*/
add_filter( 'tinymce_templates_enable_media_buttons', function(){ return true;
// Displays insert template button on all visual editors
} );

ACFにgoogle maps apiキーを登録

概要

ACFにgoogle maps apiキーを登録

施策

/*-------------------------------------------------------
google maps api key
--------------------------------------------------------*/
function my_acf_google_map_api( $api ){
	$api['key'] = '【goolemaps api keyを代入】';
	return $api;
}

add_filter('acf/fields/google_map/api', 'my_acf_google_map_api');

管理者以外にアップデートのお知らせ非表示

概要

管理者以外にアップデートのお知らせ非表示

施策


/*-------------------------------------------------------
//管理者以外にアップデートのお知らせ非表示
--------------------------------------------------------*/
function update_nag_admin_only() {
	if ( ! current_user_can( 'administrator' ) ) {
		remove_action( 'admin_notices', 'update_nag', 3 );
	}
}
add_action( 'admin_init', 'update_nag_admin_only' );

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?