【追記】正しい方法を教えていただいたので修正記事を書きました。
データベースの接続設定を default から任意の名前の設定に切り替える方法。
解決方法というより、こうしたら出来ましたーというメモです。
本当はもっとスマートなやり方があると思います。
追記(2012.04.02)
taxonomy-genre.php の記述を簡略化しました。
WordPressで音楽情報配信のコーナーを作ろうと思いまして、カスタム投稿タイプと、カスタムタクソノミーを作りました。しかし多くの人がつまづくように、僕もタクソノミーのアーカイブページでひっかかりました。最初のページは表示されるのに、2ページ目以降で 404 NotFoundになってしまったのです。
http://~/taxname/term/ ← 表示される
http://~/taxname/term/page/2/ ← 404 NotFound
課題は残ったものの一応原因が判明し、解決もしたのでメモとしてまとめたいと思います。なお、投稿タイプ、タクソノミーについては下記のサイトがとてもわかりやすいです。
なにやら世間ではCDNが大流行とかで、なかでも無料の「CloudFlare」が話題になっているそうですね。CDNというのはざっくり言うと、サーバーの負荷を軽減するためにデータをいろんなサーバーに置いて分散しましょうというものです。
うちのサイトは画像を Picasaに逃がしているし、アクセス自体が少ないので負荷なんて考える必要もないレベルなのですが、仕事で使えそうなので手を出してみることにしました。
キッカケは fladdictさんのブログだったりします。
》0円の広域負荷分散システムCloudFlareが素晴らしい件 | fladdict
主に使いそうなものをまとめました。
<?php // ページ数 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // カスタム投稿タイプ「sounds」、カスタムタクソノミー「genre」、ターム「民謡」、新着4件取得 query_posts( array( 'post_type' => 'sounds', 'taxonomy' => 'genre', 'term' => '民謡', 'posts_per_page' => 4, 'paged' => $paged, 'order' => 'DESC' ) ); if (have_posts()) :while (have_posts()) : the_post(); ?> // ブログの記事出力と同じ要領 <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php endwhile; endif; wp_reset_query(); ?>
ただし複数のループをさせる場合は query_posts() ではなく get_posts() を使う。
参考:お手軽WordPress Tips:カスタムタクソノミーで作成した特定のタームに属する記事の一覧を表示数を指定して表示する - かちびと.net
参考:get_posts:WordPress私的マニュアル
ちょっとハマったのでメモ。
分かってしまえば非常に単純な話なんだけど、たぶん多くの人がハマるんじゃないかなというポイントをまとめてみました。
元ネタはこちらになります。
》jQuery1.4から追加されたjQuery.proxy()を試してみる | THE HAM MEDIA BLOG
jQueryを使って click()、hover()などのイベントを扱う時、多くのサンプルコードではこんな感じに書いてますよね。
$('.button').click( function(){ alert( this.id ); } );
大抵のものはこのままでも問題ないのですが、クラスやオブジェクト内の関数を扱いたい時にちょっと困ったことになります。
WordPress 3.0からは「カスタム投稿タイプ」が使えるようになり、「カスタムタクソノミー」も使いやすくなりました。
「カスタム投稿タイプ」、「カスタムタクソノミー」についてはこちらの記事が大変参考になります。
》WordPressでサイト設計をする時に覚えておきたいポストタイプの特徴などいろいろ
どちらもスラッグを自由に設定でき、URLに反映できるようになっていますが、となると
もし同一スラッグのポストタイプとタクソノミー、記事と分類名(ターム名)があったらどうなるのか? と気になりました。
つまりこうです。どちらもURLは一緒になります。
http://~/ポストタイプ/記事
http://~/タクソノミー/分類名
↓
http://~/event/comike
http://~/event/comike
そんなわけで実験してみました。
ポストタイプ、タクソノミーを作成するにあたって、「Custom Post Type UI」プラグインを使用しています。
最近スマホ用サイトにも手を出し始めました(今更か)。
コーディング自体はナウでヤングな若者の間で流行のjQueryMobileを使えば比較的低コストでできちゃうのですが、問題になるのがPCとスマホの表示切り替え。
一番ラクチンなのはそれぞれのページからリンク貼って終わらせる方法ですが、たぶんそういうのは気付かれにくい。やはり自動的にスマホ用ページへ飛ばしたいですよね。
自分の要件はこんな感じです。
そんなわけで色々調べて、自分にあった方法をまとめてみました。
もっとスマートな方法はあると思いますが。
iPhone/iPadで日記を更新する際に面倒なのがリンクタグの作成です(断定)。
検索すると便利なブックマークレットがたくさん公開されているのですが、いまいち自分の好みに合うものがなかったので自分で作ってしまいました。
このソースをコピーしてブックマーク登録してください。
やりかたが分からない人は次の「使い方」へ。
まず現在表示しているこのページをブックマークします。
名前は「リンク作成」とかにしておくといいかもしれません。
URLは後で編集します。
上記のjavascriptソースを全て選択してコピーします
登録したブックマークを編集し、コピーしたjavascriptをURLの部分にペーストします。
これで準備完了!
あとはリンクを作成したいページで、このブックマークレットを呼ぶだけです。
ActionScript3でオブジェクトを複数条件ソートする時のメモ。
sortOn() を使うと一発でできるのでラクチンです。
しかし条件の指定をちょっと変えると結果が全然違ってくるので注意です。
下の例では全て「y」「x」の順にソートしています。
var list:Array = [ new Point(5, 5), new Point(0, 10), new Point(10, 10), new Point(10, 0) ]; list.sortOn( ["y", "x"] ); // 文字列比較で小さい順に並べている。文字列だから「10<5」になる。 // (x=10, y=0),(x=0, y=10),(x=10, y=10),(x=5, y=5) list.sortOn( ["y", "x"], Array.DESCENDING ); // 降順ソート。こちらも文字列だから「10<5」になる。 // (x=5, y=5),(x=10, y=10),(x=0, y=10),(x=10, y=0) list.sortOn( ["y", "x"], [Array.NUMERIC, Array.NUMERIC] ); // どちらも数値としてソート // (x=10, y=0),(x=5, y=5),(x=0, y=10),(x=10, y=10) list.sortOn( ["y", "x"], [Array.DESCENDING | Array.NUMERIC, Array.NUMERIC] ); // 「y」は「数値で降順」、「x」は「数値で昇順」 // (x=0, y=10),(x=10, y=10),(x=5, y=5),(x=10, y=0) list.sortOn( ["y", "x"], [Array.DESCENDING|Array.NUMERIC, Array.DESCENDING|Array.NUMERIC] ); // どちらも「数値で降順」 // (x=10, y=10),(x=0, y=10),(x=5, y=5),(x=10, y=0)
Array.CASEINSENSITIVE | 大文字と小文字を区別しないソート |
---|---|
Array.DESCENDING | 降順のソート順 |
Array.UNIQUESORT | 一意性ソート要件 |
Array.RETURNINDEXEDARRAY | sort() メソッドまたは sortOn() メソッドの呼び出し結果としてインデックス付き配列を返す |
Array.NUMERIC | 数値によるソート |
Array.UNIQUESORT はちょっと特殊で、ソート対象に同じ値が混ざっていないかチェックします。
同じ値が混ざっている場合は並び替えをせず「0」を返します。
前々回の記事でインストールをやり、
前回の記事でサブドメインの設定について書きました。
今回はLAN内の別のPCからアクセスする方法を書きます。
前回のようなサブドメインではなく、ポートを使ってバーチャルホストを実現します。
まずはApacheをインストールしたPCが外部からのアクセスを許可しているか確認します。
他のマシンのブラウザから対象PCのIPアドレスを入力します。
IPアドレスは「コマンドプロンプト」で「ipconfig」と入力すると確認できます。
(スタートメニュー>プログラム>アクセサリ>コマンドプロンプト)
例:http://192.168.0.10/
これでAMPPSの画面が出てくればいいですが、出てこない場合はファイアウォールの設定が必要になります。
自分の環境では「Apache HTTP Server」として有効になっていました。
ローカルPC内ならサブドメインを用いたバーチャルホストが使えますが、その方法だと他のPCからはちょっと手間がかかります。
なのでポート単位でバーチャルホストを実現する方法をここでは書きます。
まずは httpd.conf に使用したいポートを追記します。
「80」はAMPPSの管理画面のために残しておきたいので、「8080」や「8000」など空きポートを使います。
[AMPPSフォルダ]apacheconfhttpd.conf
Listen 80
↓
Listen 80
Listen 8080
次にバーチャルホストの設定です。
[AMPPSフォルダ]apacheconfextrahttpd-vhosts.conf
<VirtualHost *:8080>
DocumentRoot "U:/http"
ServerName localhost
</VirtualHost>
肝は「8080」になっているところと、サーバーネームにサブドメインを付けないことです。
これで、下記のようにポート番号を指定してアクセスすれば見えるようになります。
例:http://192.168.0.10:8080/
上記のサイトがとても詳しいので参考にしてください。
上記サイトほか、ポート変更する場合は「NameVirtualHost」の設定も必要のようですが、自分の環境では変更していません。
単に設定し忘れただけなのですが動いているので良しとします。
どうせ自分しか見ないものなのでw