gooodmark

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

724bookmark

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);
})();