管理画面でbodyの終わりにjsファイルを読む

WordPressの管理画面で独自のjsファイルを読み込むテクニックとして、admin_head をフックしてそこで jsファイルを読むというのがある。
ただ、これだとヘッダで読み込まれるため、WordPressで使用されている他のjsファイルの前に読み込まれてしまい、ちょっと困った。
できれば、bodyタグの終わりにjsファイルを読みたい。

そこで、wp_enqueue_scriptを使う。
れの引数に $in_footer というのがあり、これをtrueにすると bodyタグの終わりのところで読み込んでくれる。

こんな感じに使う。

1
2
3
add_action( 'admin_enqueue_scripts', function() {
wp_enqueue_script('admin-js', get_bloginfo('template_directory').'/js/admin.js', array(), '1.0', true);
});

プレビューのリンク先を変更する

custom post type によってプレビューの先を変更したいケースがある。
そういう場合は、preview_post_link をフックする。これには元のプレビュー先のurlが渡ってくるのでこれを好きに加工すれば良い。
デフォルトでは、以下のようにpost_typeとid、preview=trueというパラメータが入っている。

1
http://example.com/wordpress/?post_type=food&p=10&preview=true

1
2
3
4
5
6
7
add_filter( 'preview_post_link', function($link) {
global $post_type
if($post_type == 'food'){
//$link を適当に加工
}
return $link;
});

ここにタイトルを入力 を変更する

タイトルのプレースホルダーに「ここにタイトルを入力」とあるのを変更したい。
custom post type を使っていると、入力するのがタイトルじゃなかったり、プレースホルダーにもう少し説明を加えたいことがあるからだ。
function.php で enter_title_here をフックして、以下のように記述すればOK。

1
2
3
4
5
6
7
8
9
10
11
add_filter( 'enter_title_here', function($title){
global $post_type;
if($post_type == 'food'){
$title = '食べ物の名前を入力してください(例:ステーキ)';
}else if($post_type == 'dessert'){
$title = 'デザートの名前を入力してください(例:アイスクリーム)';
}else{
$title = 'タイトルを入力してください';
}
return $title;
});

sprite の multiple で 境界がおかしくなる

spriteの境目に線が入る

サンプル画像

上記画像をspriteで読み込んで32 x 32 で切り出してマップとして配置した。

サンプル画像

そうすると、境界線に青い線が入ってしまった。しかし、32 x 32 で切り出しがミスっているわけでもなく、描画して初めて発生する。

sprite の Filter Mode を設定

原因としては、Filter Mode というやつだ。
これがデフォルトだと Bilinear になっており、これは「テクスチャを近くでみたときにぼやける」設定らしい。
これを Point (テクスチャを近くでみたときにブロック状になる) に変更すればOK。参考

Filter Mode

Renderer の Materials を スクリプトから設定する

MeshRenderer などの Materials をスクリプトから動的に設定する。
普通にこうやればできるかなと思ったが、できず。

1
2
renderer.materials[0] = someMaterial1;
renderer.materials[1] = someMaterial2;

正解は以下。一度配列で取得して、配列としてセットし直すと動く。

1
2
3
4
Material[] mats = renderer.materials;
mats[0] = someMaterial1;
mats[1] = someMaterial2;
renderer.materials = mats;