忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

WordPress カスタムメニュー設定がダッシュボードに表示されない
ワードプレスのテンプレートカスタマイズ中。
カスタムメニューでナビゲーションを好きなようにいじろうとしたら、あれ?ダッシュボードのサイドメニューに「メニュー」が見当たらない…と思ったら、どうやらテンプレート依存するようです。
元にしたテンプレートのfunctions.phpには、
add_theme_support( 'menus' );

が無かった!

一行追加したら、元々設定してあったメニューの設定がきちんと表示されました。

■WordPress カスタムメニューに対応させる!
http://www.myu-zin.com/webridge/archives/555.html
function.phpの設定から書いてあって親切。
JavaScript 連想配列のソート
var aTest = new Array();
aTest['ccc'] = 8;
aTest['aaa'] = 4;
aTest['ddd'] = 9;
aTest['bbb'] = 4;
aTest['eee'] = 1;



こういうかんじの連想配列を、値の順番に並べ替え。キーの値に法則がないもの(日本語など)をうまくソートしたい。

■JavaScript メモ / チップス 連想配列のソートと長さ
http://www.artemis.ac/contents/javascript/jsmemo4.htm
長さの取り方や、ソートの方法など。
キー値の大小・値の大小別のコードサンプル有。
詳しい解説付きでわかりやすい。
WordPressプラグイン作成 JS・CSSの読み込み方法
フックを使って、js・cssの外部ファイルを読み込む方法。
echoで直接書き出すのはどうなんだろう。。。と思って調べた結果です。

■wp_enqueue_scriptで外部のjQueryライブラリを使う
http://www.shifft.in/blog/wordpress/using-wp_enqueue_script/

■WordPressでテーマからJavascriptやCSSを読み込む書き方まとめ
http://notnil-creative.com/blog/archives/1299
wp_enqueue_script/wp_register_script/wp_enqueue_styleなど。具体的な使い方ソースコード。
書式は分かっても、具体的にどんな値を設定したらいいの?を解決。
サンプルが充実していて、初心者にはありがたいページ。

■wp_register_scriptとwp_register_styleの使い方
http://www.youngflavor.net/2013/04/373/
引数の詳しい説明とデフォルト値。
$hanle=登録する識別名、という記載の、識別名って何?を解決。
(フックをかける時の名前を自由に決められる、ということみたい)
MySql 自動採番のようなINSERT文(仮想テーブルを使う)
 
IDと連番を格納するようなテーブルで、連番をどんどん+1(インクリメント?)していくような処理がしたい。自動採番というか。
たとえば、
 
--------------------
 No | order| data 
--------------------
 1  | 1    | apple
 1  | 2    | orange
 1  | 3    | cherry
 2  | 1    | red
 2  | 2    | blue
--------------------
 
このテーブルでいうと、No=1に追加するなら次はorder=4ね、みたいな処理を、できればSQL一文でやっちゃいたいなと。
 
そんなわけで試したこと↓
 
・テーブルをcreateする時点で「AUTO_INCREMENT」にする
  →キーじゃないのでダメ
・INSERT文のvalueの中で+1
  →書式がおかしいので当たり前のようにエラー
・INSERT SELECTで、max()を使って取得
  →自分自身をSELECTすることはできないらしい。
 
ここで、select文をサブクエリーとして、仮想テーブル(テンポラリテーブル?)のように使えばクリアできるという裏技を発見。
そこからまた試行錯誤。
 
試したこと第二弾↓
・テンポラリテーブルの定義(asを付ける)のタイミング
  →select文の外、カッコで括らないとだめみたい
・max()で値取得
  →該当データがないときはnullが返ってくる
・NVL()でnull回避
  →MySqlでは使えなかった(IFNULLを使う)
 
 
こうして最終的にたどり着いた、思ってたよりも壮大なsqlがこちらになります。
 
 
 
insert into edit_tbl(
	`no`,
	`order`,
	`data`
) values (
	1,
	(select tmp_tbl.next_order 
		from (select IFNULL(max(`order`),0)+1 as next_order 
			from edit_tbl 
			where `no`=1) as tmp_tbl) ,
	'testdata'
);
 
 
長っっ!!!
これだと後から見たときになにが(私のレベルだと)なんだかさっぱりわからないので、
普通に、SELECTしてからINSERT、という手順に切り替えようと思いました。
教訓:あとから見たときの分かりやすさが一番。
php checkboxのオン/オフ(checked)の値を取得
チェックボックスのオン/オフの状態を取得する方法。
postでもgetでも、オンの値しか返してくれないのでひと手間が必要。
(これはaspでもはまったなぁ…)

チェックボックスが1つであれば、
<input name="hoge" type="hidden" value="0" />
<input name="hoge" type="checkbox" value="1" />

オンのとき→1、オフのとき→0という具合に取得できます。

今回やりたいのは、チェックボックス自体が配列の場合。
個数も動的に変えていきたい。
<input name="hoge[]" type="hidden" value="0" />
<input name="hoge[]" type="checkbox" value="1" />

↑の例と同じように書いてしまうと、
結果は、
array (size=2)
0 => string '0' (length=1)
1 => string '1' (length=1)

もともと配列なので、オンにすると両方取れてしまう。

配列の引数直書きはめんどくさいので避けたい。ということで、こんな風に解決しました↓
//POSTの値を格
$arr_no   = $_POST['no'];	//キー
$arr_chk   = $_POST['chk'];	//チェックボックスの値の配列
foreach($arr_no as $key => $val){
	//チェックボックス配列からキーを検索
$tmp=array_search($val,$arr_chk);
if(!($tmp===false)){
echo $arr_no[$tmp] . "のチェックボックスはON!"; } }

checkboxのvalueにキーとなる値(IDなど)を持たせる。

オンになっているものだけ配列で取得できるので、
その配列の中からキー値を検索。

あればオンの処理、なければオフの処理。

という流れです。
これだけだと、全部オフの場合にarray_searchが動かないので、html側にもひと手間。
<input name="chk[]" type="checkbox" value="1" /><br />
<input name="chk[]" type="checkbox" value="2" /><br />
<input name="chk[]" type="checkbox" value="3" /><br />
<input name="chk[]" type="hidden" value="NULL回避用" />

こんなかんじで、同じ名前でhiddenを持たせておけば、必ずlengthが1以上の配列になるので安心です。
(この配列をループで使うときなどは注意)
- 1 - 2 - 3 - 4
prev  top next
BACKGROUND / tudu*uzu
TEMPLATE / Lenny
忍者ブログ [PR]