wordpressの管理画面にオリジナルメニューを追加
wordpressはじめました
実はPHPずっとやっていながら、なんとなく触っていませんでした
コードが汚いとか言われてますが、世界中で様々な使われ方をしているので、やってみようかと
管理画面にオリジナルメニューの追加
function.phpに管理メニューへ追加するフックを設定
管理メニューにフックする関数がwordpressで用意されています
ちなみに”フック”というのは、独自の処理を追加するための仕組みです
言葉にすると難しいのですが、要はadd_action は管理画面にメニューを追加する仕組みということです
(フック(hook)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典)
<?php add_action( $hook, $function_to_add, $priority, $accepted_args ); ?>
(関数リファレンス/add action - WordPress Codex 日本語版より引用)
フックを入れてみる
// 管理メニューにフックする add_action('admin_menu', 'admin_origin_menu');
admin_menu → actionの指定。英語の通り、管理メニューのこと。
admin_origin_menu → 呼び出す(フックする)関数名を指定
サブメニュー追加の関数を作成
add_options_pageの関数を使って、サブメニューを追加します
フックで指定したものと同じ関数名で作成
<?php add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?>
(管理メニューの追加 - WordPress Codex 日本語版より引用)
capability → 権限
menu_slug → メニューをクリックした時に表示するphpファイル
function → コールバック関数
実際に追加したのがこちら
function admin_origin_menu() { add_options_page( 'オリジナルメーニュー ページ名', 'オリジナルメニュー', 'edit_pages', 'admin_original.php', ''); } 権限は投稿者(edit_pages)にしました これでできあがり
GitやGithubの使い方メモ
シンプルだからこそ、多様性のあるGit
プロジェクトによって使い方も多種多様なので、正解はないものと思っています。
個人的なメモ用途なので随時更新していくつもりです。
ブランチ名
チケット駆動開発とまではいかないんですが、課題や不具合等はGithubのissueで管理しているので、ブランチの先頭はチケット番号をいれることが多いです。
また、単語の間は以前はアンダースコアが多かったんですが、最近はハイフンで区切るようになりました。
124-bugfix-user-create
チケット番号を先頭に入れることで、課題とbranchが明確に紐づくというメリットがあります。
コミットメッセージ
ブランチ名にもチケット番号をいれたように、コミットメッセージにもチケット番号をいれています。
fix #チケット番号 や close #チケット番号 と入れると、pull requestをmasterへマージした時に、自動でチケットを close してくれます。
コミットメッセージは英語でしょ!って人もいるかもしれませんが、怪しい英語よりもちゃんと使える日本語を優先しています。
fix #124 新規ユーザー登録時の不具合を修正
pull request
本番リリースをする前にpull requestをだして、決められた承認者がOKを出してくれれば master ブランチにマージします。
Github導入からそんなに時間が経っていないので、そのうちソースコードレビューなんかもしないなって思っています。
masterから新しいブランチを作成する
特にこだわりはないんだけど checkout にオプションの -b をつけると、1-hogeという新しいブランチを作ってくれて、switchもします
git checkout -b 1-hoge
おすすめの書籍
よくこちらの本を参考にしています。
現場で使える方法がのっているので、とても実用的。
難しくもなく、かといって浅くもない内容なので、Githubを使う人は是非手に取ってみてください。
GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)
- 作者: 大塚弘記
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (21件) を見る
【Vim】 後ろの空白を一括置換
無駄に混ざる空白
一つ一つ消すのもだるい、でもコードとしては不要なので消したい
コマンド一つで一括置換できるよ、そうvimならね!(大抵のエディタで出来ます)
:%s/ *$//
%s を使って一括置換
%s/[半角スペース]*$//
正規表現はちょっと自信ないんですが、解説をすると%sはvimの文字を置き換えるコマンドです
sed(セド)の頭一文字をとって、sコマンドなんじゃないかなーって勝手に思ってます。
実際のsコマンドの使いかたは、こんな感じ
:%s/置換前文字列/置換後文字列/
追記 置き換える範囲を行で指定する場合
開発あるあるなんですが、末尾の空白を一括で削除したら1000行差分でちゃった☆とかあるって
削除するべきかもしれないんだけど、チェックするのは面倒だったり
実は削除してはいけない記述があって大事故!とか色々あったりするので、置き換え範囲を行指定すると楽ちんでした
:開始行番号,終了行番号s/置換前文字列/置換後文字列/
『$』を置き換えで使うと、指定した文字列で終わる行を置き換える
$ が末尾ということは知っていたのですが、置き換えコマンド使いかたは知りませんでした・・・
置き換えで [スペース]*$ と指定した場合は、末尾が空白という意味になります
参考にしたサイト
【Rails】 Routing Error uninitialized constant HogeTestController
RailsでRouting Errorがでた
バージョン: Rails 3.2.13
Routing Error uninitialized constant HogeTestController Try running rake routes for more information on available routes.
uninitialized constant HogeTestControllerがでたら確認すること
controller のファイルは存在するのか
一番多いのが、そもそもcontrollerが存在していないケース
app/controller/hoge_test_controller.rbがあるかを確認する
class 名が間違っている
ファイルはあるものの、下記のようにクラス名が間違っている場合、エラーになります
class HogeTesController < ApplicationController
ファイル名が間違っている
今回の原因はこれでした・・・orz
よくあるのは、ファイル名にコントローラを入れるのを忘れちゃったわってケース
app/controller/hoge_test.rb ってなっていたので、renameしてみました
mv app/controllers/hoge_test.rb app/controllers/hoge_test_controller.rb
バージョンでこの辺は変わるので、そこも要注意
参考にしたサイト
Rails "uninitialized constant ****Controller" の対処法 - プログラミングの詰まりどころを、懇切丁寧に
マタタビ Rails 開発: Rails 2.2.2 > 2.3.5 uninitialized constant ApplicationController でハマリマス
【PHP】コマンドライン実行時のパラメータ(引数)取得 - $argv、$argc
コマンドライン実行時に引数を渡す
業務で数カ月に一回くらい、PHPファイルを作ったり修正したりするんですが、忘れたころにぐぐって、あーこんなんでしたってなるなる。
記事を書いて少しでも覚えられますように。
$argvと$argc
PHPをコマンドラインで実行すると、コマンドラインで指定した引数の情報が$argc、$argvという変数に格納されます。 第一引数は必ず、スクリプトのパスが入っているので注意 ※毎回ここでひっかかります…
$ php test.php "param1" "param2"
$argc '' 引数の数 $argc = 1 $argv '' 引数情報の配列 $ar#コマンドライン実行時に引数を渡す
引数を指定しない場合
こんな場合でも引数は入ってきます。
第一引数にスクリプトのフルパスが入ってきます。
$ php test.php
$argc '' 引数の数 $argc = 1 $argv '' 引数情報の配列 $argv[0] = "test.php"
サンプルコード
$ php date.php "20141107"
<?php $yyyy = substr($argv[1], 0, 4); $mm = substr($argv[1], 4, 2); $dd = substr($argv[1], 6, 2); echo '引数に指定した日時は{$yyyy}年{$mm}月{$dd}日です'
gv[0] = "test.php", $argv[1] = "param1", $argv[2] = "param2"
引数を指定しない場合
こんな場合でも引数は入ってきます。
第一引数にスクリプトのフルパスが入ってきます。
$ php test.php
$argc '' 引数の数 $argc = 1 $argv '' 引数情報の配列 $argv[0] = "test.php"
サンプルコード
$ php date.php "20141107"
<?php $yyyy = substr($argv[1], 0, 4); $mm = substr($argv[1], 4, 2); $dd = substr($argv[1], 6, 2); echo '引数に指定した日時は{$yyyy}年{$mm}月{$dd}日です'
【PHP】imput type ="image" で POSTされたkeyに_x _y が付いている
PHPで見覚えのないx や y が付いている
先日、社内の古いプログラムを調査したときに知った、今更な知識
あるところに、二つのファイルがありました…
foreach($_POST as $key =>$value){ if($key == "add_x"){ echo "追加だよ" elseif($key == "del_x"){ echo "削除だよ" end end
- hage.html
--省略 <form action="./hoge.php" method="POST"> <input type=text name="email" class="address_input"> <input type="image" name="add" src="./images/add.gif"> <input type="image" name="del" src="./images/del.gif"> </form> --省略
単純にhage.htmlのフォームからhage.phpにPOST投げている、平凡なプログラムなんですが、"add_x" と "del_x" ってどこから出てきたのか…とデザイナーさんと途方にくれました
分かってみればなんてことないない事だったのですが
input type = "image" は座標をPOSTする
要はクリックした位置を渡す仕様のようです ※Enterキーを押した場合は(0, 0)
<input type="image" name="add" src="./images/add.gif"> <input type="image" name="del" src="./images/del.gif">
こんな感じである場合、POSTされるのは add_x, add_y, del_x, del_y のkeyです(多分)
で、先述のPHPのプログラムの意図はこんな感じじゃないでしょうか
注意するところ
もし判定に使うのなら、_xだけではなく、yも入れてほしいな
_xだけだとぱっと分からないけれど、xとyがあればなんとなく”座標かな”って思う(かもしれない)
古いプログラムだと、何も考えずに_xのname付ける人もいそうだしね
普段からx、yのnameは使わない
逆に_x は座標のパラメータだ!って先入観で無駄な手間がかかりそう。
なので、極力使わないほうが良いなって思いました。
使えなくなる機能がある
- form.submit() が使えなくなる
- input=textでenter送信とかできない
botや不正対策に使えそうな気がしてきた
brand ってロゴの画像を置いておいて、aをクリックしてください、と書いておいて座標で判断する
ちょっとしたフォーム送信とか、掲示板とかに使えそうだけど聞いたことはないw
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログを見る