wordpressの登録(register)リンクをregister filterでフックする
リンクをボタン化するHTML
wordpress標準の状態では、登録リンクは通常のリンクテキストで表示されている。
リンクをボタン化するために以下のようなHTMLが出力されるようにwordpressブログをカスタマイズする必要がある。
<a href="#"><button>登録</button></a>
登録リンクのHTML出力部分は、register filter hookでカスタマイズすることができ、リンクについてwp_register()関数で出力できるようになっている。
register filter hook
フィルターフックの設定は以下のように行い。
add_filter('register', array($this, 'new_register') );
new_register関数は以下のようにしてみた。
function new_register( $link ) { $link = str_replace("\">", "\"><button>", $link); $link = str_replace("</a>", "</button></a>", $link); return $link; }
aタグの内側にbuttonタグを入れる処理をフック内で行っている。
リンクボタンを呼び出しは以下のように設定してみた。
wp_register($before = '', $after = '', $echo = true);
通常は、
wp_register()
といった感じで引数なしで呼び出しているが、デフォルトで設定される引数があり、そのデフォルトの状態は以下のようになっている。
wp_register($before = '<li>', $after = '</li>', $echo = true);
そのため、標準設定では、登録リンクがliで囲まれる仕様になっている。今回はliで括られた状態ではなく、フィルターから出力されたHTMLをそのまま表示するように上のように引数を消す処理をしてある。また、echo引数は、phpのechoのことを指しており、この値をfalseにするとリンクが出力されなくなる。