タグ別アーカイブ: plugin

WordPress Plugin の管理ページで指定の JavaScript と CSSを読み込む

WP Social Bookmarking Light の管理ページをつくってるときにハマった点メモ。

メモ

JavaScript と CSS の読み込みには、wp_enqueue_scriptwp_enqueue_style APIを使用する。

管理ページ上で上記 API を反映させる為に、add_actionadmin_print_stylesadmin_print_scripts を使用する。

ただし、単純に

add_action('admin_print_styles', 'myplugin_admin_print_styles');
add_action('admin_print_scripts', 'myplugin_admin_print_scripts');

とすると、他のプラグインの管理ページにも同様に指定の JavaScript と CSS が反映されてしまい、競合等の迷惑をかける可能性がある。

この問題は、例えばこのように

$page = add_options_page('myplugin', 'myplugin', 'manage_options', __FILE__, 'myplugin_admin_page');
add_action('admin_print_styles-'.$page, 'myplugin_admin_print_styles');
add_action('admin_print_scripts-'.$page, 'myplugin_admin_print_scripts');

add_options_page 等の戻り値を admin_print_stylesadmin_print_scripts のお尻に加えてあげると回避できる。

全体像

WP Social Bookmarking Light からソースコード抜粋。

function wp_social_bookmarking_light_admin_print_scripts()
{
    wp_enqueue_script('jquery');
    wp_enqueue_script('jquery-ui-core');
    wp_enqueue_script('jquery-ui-tabs');
}
 
function wp_social_bookmarking_light_admin_print_styles()
{
    wp_enqueue_style('jquery-ui-tabs', WP_SOCIAL_BOOKMARKING_LIGHT_URL."/libs/jquery/css/pepper-grinder/jquery-ui-1.8.6.custom.css");
}
 
if( function_exists('add_options_page') ){
    $page = add_options_page( 'WP Social Bookmarking Light', 
                              'WP Social Bookmarking Light', 
                              'manage_options', 
                              __FILE__, 
                              'wp_social_bookmarking_light_options_page' );
 
    add_action('admin_print_styles-'.$page, 'wp_social_bookmarking_light_admin_print_styles');
    add_action('admin_print_scripts-'.$page, 'wp_social_bookmarking_light_admin_print_scripts');
}

WordPressにソーシャルブックマークボタンを楽々設置できるプラグイン:WP Social Bookmarking Light

WordPress にソーシャルブックマークボタンを楽々設置できるプラグイン、WP Social Bookmarking Light を公開しました。

2011.01.21 GitHubにソースコードを公開しました。

概要

ソーシャルネットワーク, ソーシャルブックマーク系のリンクをエントリーの先頭か後尾に自動で追加するプラグイン。

例えば、はてなブックマークや Facebook や Google Buzz や Twitter など。

どのリンクを追加するかは、設定画面から選択可能です。

このプラグインは、Social Bookmarking JPwp-hatena をインスパイアしたものです。

インストール

1. こちらのページからプラグインをダウンロードして、wp-content/plugins/ にアップロード。

2. WordPress 管理画面のプラグインメニューから、WP Social Bookmarking Light を有効化。

3. お好みで、WordPress 管理画面の WP Social Bookmarking Light 設定メニューから構成を変更可。

スクリーンショット

エントリーに表示されるアイコンたち。

設定画面。

バッジ

wp social bookmarking light Download

意見・要望

意見・要望・不具合報告などは、コメント欄かGitHubのIssuesまでよろしくです。

WordPress プラグインを公開する手順

WordPress Plugin を公開するまでの流れをメモ。

公開するページは、WordPress.org Plugins

アカウント登録

最初に、WordPress.orgでアカウント登録。

必須項目は、Username と Email。

登録するとメールが届く。ログイン用のパスワードも一緒に届く。

パスワードは、Forums ページの右上にある View your profile から変更できる。

プラグイン登録申請

続いて、Add Your Pluginで登録申請。

Extend → Plugins → Developer Center → Add Your Plugin という順番でたどり着ける。

必須項目は、Plugin Name と Plugin Description。

申請の結果が出るまで、大体1週間ぐらいかかる。

承認完了したらメールが届く。

SVN チェックアウト

承認メール内に Subversion のリポジトリ URL が書かれている。

この URL が、基本的にプラグインの公開場所となる。

リポジトリをチェックアウト。

$ svn co http://plugins.svn.wordpress.org/wp-hoge/
A    wp-hoge/trunk
A    wp-hoge/branches
A    wp-hoge/tags

trunk が作業する場所。
tags が公開する場所。
とざっくり決める。

公開準備

既にプラグインが完成しているのであれば、そのファイルたちを trunk にコピーする。
まだであれば作成する。trunk 配下で作業がオススメ。

プラグインが完成したら、readme.txt の準備する。
WordPress 公式の readme.txt サンプルは、こちら

フォーマット通りに記述すると、readme.txt の内容が WordPress Plugin 公開ページに反映される。
フォーマットの確認は、こちらのサイトで行う。
足りない項目があると、以下の図のように教えてくれる。

公開

readme.txt が完成したら、公開するバージョンなどを決める。

readme.txt の Stable tag 項目に設定したバージョン番号をタグ名にする。

Stable tag: 1.0.0

上記の場合なら、1.0.0 という名前のタグを作成する。

まず trunk 内のファイルをコミット。
コミットするときに WordPress アカウントのユーザ名とパスワードを求められるので要確認。

$ svn add wp-hoge.php readme.txt
$ svn commit -m "first release."
Authentication realm: <http://plugins.svn.wordpress.org:80> WordPress.org Subversion
Username: user	
Password for 'user':
...
Transmitting file data .....................
Committed revision 251421.

続いて、タグを作成してコミット。

$ svn copy http://plugins.svn.wordpress.org/wp-hoge/trunk http://plugins.svn.wordpress.org/wp-hoge/tags/1.0.0 -m "tagging 1.0.0 release."
Committed revision 251422.

最後にプラグインのページにアクセスし、readme.txt の内容が反映されていることを確認したら完了なり。

参考

WordPress.orgのプラグインディレクトリに自作プラグインを登録する方法(Windowsユーザー向け、TortoiseSVN使用) : 参考エントリー

Vim Tips & Plugins

Vim Tips & Plugins などまとめ。

Windows & gvim tips

・クリップボード
    Ctrl-insert コピー
    Ctrl-delete カット
    Shift-insert ペースト
 
・vim 上のタブとして開く
    レジストリを弄る。
    /HKEY_CLASSES_ROOT/Applications/gvim.exe/shell/edit/command
    "インストール先のパス\gvim.exe" -p --remote-tab-silent "%1"
 
・Diffエラー
    http://nanasi.jp/articles/howto/diff/vimdiff_in_windows.html
 
・ファイル選択ダイアログからファイル選択
    :bro e
    :bro tabe
 
・開いてるファイルのディレクトリ
    C-x

vim tips

・文字コード変換
    :e ++enc=utf-8
    :set fenc=utf-8
    :set fenc=sjs
 
・折り畳み
    ビジュアルモードでくくって zf
    折り畳む&開く za

vim プラグインリスト

・project
    http://www.vim.org/scripts/script.php?script_id=69
 
・FavEx
    http://nanasi.jp/articles/vim/favex_vim.html
 
・The NERD tree
    http://www.vim.org/scripts/script.php?script_id=1658
 
・The NERD Commenter
    http://www.vim.org/scripts/script.php?script_id=1218
 
・bufexplorer
    http://www.vim.org/scripts/script.php?script_id=42
 
・mru
    http://www.vim.org/scripts/script.php?script_id=521
 
・eregex
    http://www.vector.co.jp/soft/unix/writing/se265654.html
 
・grep
    http://www.vim.org/scripts/script.php?script_id=311
 
・taglist
    http://www.vim.org/scripts/script.php?script_id=273
 
・neocomplcache
    http://github.com/Shougo/neocomplcache/tree/master
 
・CD
    http://nanasi.jp/articles/vim/cd_vim.html
 
・commentout
    http://nanasi.jp/articles/vim/commentout_source.html

neocomplcache.vim 弄り

入力から補完までディレイが欲しかったから neocomplcache.vim をちょっと弄ったメモ。

neocomplcache は入力中に自動で補完候補をだしてくれる凄く便利なプラグイン。

便利だなーと使ってたけど、だんだんとインサートモードで上下移動する際、補完候補をぐるぐると辿り続けるシュールな状態に耐えられなくなった。
インサートモードでカーソル移動すんなって話かもしれないけど。

こんな感じの設定とかしてみたけど、あまし変わらず。

let g:NeoComplCache_EnableSkipCompletion = 1
let g:NeoComplCache_SkipInputTime = '0.5'

なので、ソースを弄ってみた。

autoload/neocomplcache.vim

 32         " Auto complete events
 33         "autocmd CursorMovedI * call s:complete()
 34         autocmd CursorHoldI * call s:complete()
 35         set updatetime=500

入力止めて 500 ms で補完表示するようになった。

一応、だいたい期待する動作になったけど set updatetime=500 が周りに影響しそうでやめた。
他にやり方がありそうだナー。

もう少し使い込んでみつつ他のも試してみるかー。

作者さんから頂いたアドバイスを元に

neocomplcache.vim 2.6.1

"------------------------------------------------
" neocomplcache settings
let g:AutoComplPop_NotEnableAtStartup = 1
let g:NeoComplCache_EnableAtStartup = 1
let g:NeoComplCache_SmartCase = 1
let g:NeoComplCache_TagsAutoUpdate = 1
let g:NeoComplCache_EnableInfo = 1
let g:NeoComplCache_EnableCamelCaseCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
let g:NeoComplCache_EnableSkipCompletion = 1
let g:NeoComplCache_SkipInputTime = '0.5'
inoremap <expr><Up> pumvisible() ? neocomplcache#close_popup()."\<Up>" : "\<Up>"
inoremap <expr><Down> pumvisible() ? neocomplcache#close_popup()."\<Down>" : "\<Down>"

こんな感じの設定したところシュールな状態は解消され、実に快適になった。

ありがとうございましたー!