gooodmark

goodなWebサイトを厳選ブックマーク!デザインやディレクションの参考にどうぞ。

516bookmark

WordPressのfunction.phpで常用するコード⑥(投稿スタイル編)

ビジュアルエディタ:CSSを適用&ボタン制限

function.php
function custom_editor_settings( $initArray ){
	$initArray['theme_advanced_buttons1'] = 'bold,italic,blockquote,link,';
	return $initArray;
}
add_filter( 'tiny_mce_before_init', 'custom_editor_settings' );
add_editor_style('inc/editor-style.css'); // CSSのリンク

ビジュアルエディタ:ボタンカスタマイズ

function.php
function _my_tinymce($initArray) {
	//ブロック要素を変更
	$initArray['block_formats'] = '見出し1=h4;見出し2=h5;';
	//スタイリング用クラス
	$style_formats = array(
		array(
			'title' => '文字色(緑)',
			'inline' => 'span',
			'classes' => 'txt01'
		),
		array(
			'title' => '文字色(赤)',
			'inline' => 'span',
			'classes' => 'txt02'
		),
		array(
			'title' => '文字色(グレー)',
			'inline' => 'span',
			'classes' => 'txt03'
		),
		array(
			'title' => 'キャプション',
			'inline' => 'span',
			'classes' => 'caption'
		)
	);
	$initArray['style_formats'] = json_encode($style_formats);
	return $initArray;	
}
add_filter('tiny_mce_before_init', '_my_tinymce', 10000);

テキストエディタ:ボタン追加

function.php
function custom_add_quicktags() {
    if (wp_script_is('quicktags')){
?>
<script>
  // QTags.addButton( id, ボタンテキスト, 開始タグ, 終了タグ, アクセスキー, タイトル, 優先順位(1が先頭) );
  QTags.addButton( 'h4', 'h4', '<h4>', '</h4>', '', 'h4タグ', 1);
  QTags.addButton( 'h5', 'h5', '<h5>', '</h5>', '', 'h5タグ', 2);
</script>
<?php
    }
}
add_action( 'admin_print_footer_scripts', 'custom_add_quicktags' );

ビジュアルエディタ:ショートコード「テンプレート」リンク切れ

function.php
class EditorPlugin {
    function EditorPlugin() {
        add_action('init', array(&$this, 'addplugin'));
    }
    function sink_hooks(){
        add_filter('mce_plugins', array(&$this, 'mce_plugins'));
    }
    function addplugin() {
       if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') )
         return;
       //リッチエディタの時だけ追加
       if ( get_user_option('rich_editing') == 'true') {
         add_filter("mce_external_plugins", array(&$this, 'mce_external_plugins'));
       }
    }
    // TinyMCE プラグインファイルを読み込む(js/editor_plugin.js)
    function mce_external_plugins($plugin_array) {
       //プラグイン関数名=ファイルの位置
       $plugin_array['ShortcodeConv'] = get_bloginfo('template_directory').'/js/editor_plugin.js';
       return $plugin_array;
    }
}
$myeditorplugin = new EditorPlugin();
add_action('init',array(&$myeditorplugin, 'EditorPlugin'));
/js/editor_plugin.js
(function() {
    tinymce.create('tinymce.plugins.ShortcodeConv', {
        getInfo : function() {
            return {
                longname : 'Template Image Directory short-code convert',
                author : 'Tenderfeel',
                authorurl : 'http://tenderfeel.xsrv.jp',
                infourl : 'http://tenderfeel.xsrv.jp',
                version : "1.0"
                };
        },
        init : function(ed, url) {
            var t = this;
            ed.onBeforeSetContent.add(function(ed, o) {
                o.content = t._do_code(o.content);
            });
            ed.onPostProcess.add(function(ed, o) {
                if (o.get)
                    o.content = t._get_code(o.content);
            });
        },
            _do_code : function(co) {
                //http://[wp-root]/wp-includes/js/tinymce/
                return co.replace(/\[template_url\]/g, function(a,b){
                        str = tinymce.baseURL.replace(/(.+?)wp-includes\/js\/tinymce/i,'$1wp-content/themes/【テーマフォルダ名】');
                    return str;
                });
            },
            _get_code : function(co) {
                str = tinymce.baseURL.replace(/(.+?)wp-includes\/js\/tinymce/i,'$1wp-content/themes/【テーマフォルダ名】');
                reg = new RegExp('<img([^>]+)('+str+')([^>]+)>','g');
                //a = RegExp全文 b~c = ()の中身
                return co.replace(reg, function(a,b,c,d) {
                    if ( c != "")
                        return '<img'+b+'[template_url]'+d+'>';
                    return a;
                });
            }
        });
    tinymce.PluginManager.add('ShortcodeConv', tinymce.plugins.ShortcodeConv);
})();