仕事を頼みたい人・ほしい人が知っておいて損のない話

ランサーズというサービスをご存知でしょうか。
知名度は高いらしいですが、恥ずかしながら私は先日知ったばかりです。
利用する機会がありそうなのでメモ。

このサービスは、キャッチフレーズに「仕事マーケットプレイス」とあるように、Web上で仕事を売買する市場のようなもの。
仕事を依頼するクライアントと、受注を希望する者(ランサーと呼ばれる)とのマッチングサイト。
同じマッチングサイトでありながら一般的な求人サイトと決定的に違う点は、このサービスはあくまでもプロジェクト単位でのマッチングであるという点。

お手頃価格でロゴを作ってほしい場合なんかはとても利用価値が高いのではないでしょうか。
ほかに、e-commerceシステムの作成依頼からブログの日記を書いてもらう依頼や、メルマガに登録してもらう依頼なんかもあります。
価格は自由に設定でき、例えばロゴのコンペなんかだと高額の案件ほど沢山の応募があり、質と価格のバランスが自然に取れているようにも見えました。

ランサーズ (lancers.jp)

いまさら聞けない .htaccess や ApacheやHTTPとは何かをたった1分間で知る

.haccess とは何か

  • Apacheサーバに対してディレクトリごとにディレクティブを適用させるためのファイル。
  • 設置したディレクトリとそのサブディレクトリにディレクティブを適用させる。
  • メイン設定ファイルに記述したディレクティブや上位ディレクトリにある.htaccessのディレクティブを上書きする。
  • リクエストのたびに参照される。

ディレクティブとは何か

  • Apacheサーバへの命令のこと。コマンド。指示子とも呼ばれる。

メイン設定ファイルとは何か

  • httpd.conf 。Apacheサーバの起動時または再起動時に反映される。

Apacheサーバとは何か

  • Webサーバソフトウェアの一種で最もシェアが高い。
  • 開発はApacheソフトウェア財団が行い、オープンソースであり無料で使用できる。

Webサーバソフトウェアとは何か

  • HTTP(HyperText Transfer Protocol)に則り、クライアントのWebブラウザのリクエストを解析して、Webサーバコンピュータ内に存在するデータをHTTPコネクションに送信するソフトウェア。

HTTPとは何か

  • WebブラウザとWebサーバの間でHTMLなどのコンテンツの送受信に用いられる通信プロトコル。
  • リクエスト-レスポンス型のプロトコルである。

通信プロトコルとは何か

  • ネットワークを仲介してコンピュータ同士が通信を行う場合の取り決めのこと。
  • 国際標準化機構(ISO)により7つの階層に分けて標準化されている。
  • IPは3番目、TCPは4番目、HTTPは5番目の階層である。

WordPress の get_bloginfo, bloginfo を詳しく見る。

get_bloginfo(), bloginfo() のパラメータとしてプリセットされている文字列を一覧にしてみました。調べたWordPressのバージョンは3.2.1 です。こうして眺めてみると、公開ページの出力に必要なデータに絞っていることがよくわかります。

bloginfo( $show ) は get_bloginfo( $show, ‘display’ ) で取得した値を echo するラッパー関数の類。

単に get_option() を呼び出しているものは意外と少なかった印象。

$show (第1引数) 処理内容 フィルタ
(※1)
関数 パラメータ その他
$show 関数 パラメータ その他 フィルタ
home(非推奨※2) home_url 無し 無し bloginfo_url
siteurl(非推奨※2) home_url 無し 無し bloginfo_url
+url(※5) home_url 無し 無し bloginfo_url
+wpurl(※5) site_url 無し 無し bloginfo_url
+description get_option "blogdescription" 無し bloginfo
+rdf_url "rdf" 無し bloginfo_url
+rss_url "rss" 無し bloginfo_url
+rss2_url "rss2" 無し bloginfo_url
+atom_url "atom" 無し bloginfo_url
+comments_atom_url "comments_atom" 無し bloginfo_url
+comments_rss2_url "comments_rss2" 無し bloginfo_url
+pingback_url get_option "siteurl" 末尾に"/xmlrpc.php"を付加 bloginfo_url
+stylesheet_url get_stylesheet_uri (※3) 無し 無し bloginfo_url
+stylesheet_directory (※5) get_stylesheet_directory_uri 無し 無し bloginfo_url
+template_directory (※5) get_template_directory_uri 無し "template_url"と完全に同じ bloginfo_url
+template_url (※5) get_template_directory_uri (※3) 無し "template_directory"と完全に同じ bloginfo_url
+admin_email get_option "admin_email" 無し bloginfo
+charset get_option "blog_charset" 設定されていない場合 "UTF-8" に上書き bloginfo
+html_type get_option "html_type" 無し bloginfo
+version 無し 無し グローバル変数 $wp_version をセット bloginfo
+language get_locale 無し アンダースコア(_)をハイフン(-)に変換 bloginfo
+text_direction is_rtl 無し 関数が存在して戻り値が真の場合 "rtl" を、偽の場合 "ltr" を返す
is_rtl関数が存在しない場合は "ltr"を返す
bloginfo
+name (※4)および、他に該当しなかった全て get_option "blogname" 無し bloginfo
  • (※1) bloginfo, または get_bloginfo の第2引数に 'display' を渡した場合のみ。
  • (※2) 替わりに "url" を使用します。
  • (※3) 内部で呼び出している関数の末尾は "I"ですが、キーワードの末尾は"L"。
  • (※4) switch 構文の default でもあるため、他に該当しなかった場合もこの処理が行われる。
  • (※5) いずれも末尾に'/'などのセパレータはつかない。

get_bloginfo() のフィルタ処理

get_bloginfo() の第2引数に ‘display’ を渡すことでフィルタが適用されます。( bloginfo()は常に適用されます。 )

適用されるフィルタフックは’bloginfo_url’ もしくは ‘bloginfo’ のいずれか一方で、この振り分けを $show に含まれる文字列で判定しているのがWordPressらしいところでしょうか。

具体的には、$show パラメータに ‘url’, ‘directory’, ‘home’ のいずれかが含まれている場合には ‘bloginfo_url’ フックが、それ以外の場合は ‘bloginfo’ フックが適用されます。

デフォルトでは’bloginfo’フックの場合において wptexturize(), convert_chars(), esc_html()の順にフィルタ用関数を通されます。(cf./wp-includes/default-filters.php [Format strings for display.])
‘bloginfo_url’フックの場合はデフォルトでは何も処理をしないようです。

※ちなみに、get_bloginfo() の第2引数は今のところ ‘display’のみが有効。なお、Codex には大文字イニシャルで ‘Display’ とありますが実際は case-sensitive で小文字が正しいです。

[参考ページ]

WordPress の言語設定の変更は、マルチサイトの是非で方法が異なる。

管理画面のエラーの内容からスクリプトをgrepなどで辿って調べたいと思っても日本語化されてるので手間がかかって仕方ない。というわけで、いったん英語モードにしようと思ったものの、確か見た記憶のある言語を変更できる管理画面上のインターフェイスがどこにもない。確かに見たはずなんだけど…

調べたところ、マルチサイト化している場合のみ、ブログ単位で管理画面から言語を変更できるようだ。

// /wp-admin/options-general.php
$languages = get_available_languages();
if ( is_multisite() && !empty( $languages ) ):
// 以下、言語設定用の表示が続く

ここで設定された言語設定はマルチサイトでのみ作成される wp_blogs テーブルの lang_id に格納されるため単独ブログでは反映するすべがない。

単独のサイトの場合は wp-config.php を編集する必要あり。

define('WPLANG', 'ja');

これをコメントアウトすればデフォルトの英語表記になります。

複数言語のユーザーで同一ブログを編集するためには何らかのプラグインが必要になるのでしょうね、今のところは。

参考サイト:

独自に取得した投稿オブジェクトを、デフォルトっぽく表示する方法

あえて定石から外れたやり方でポストを表示するためのメモ。

// 通常のWordPressループとは別に投稿オブジェクトを取得
$another_post = get_post( $args );

// パーマリンクの取得
$permalink = apply_filters( 'the_permalink', get_permalink( $another_post -> ID ) );

// コンテンツの取得( だいぶ端折った簡易版 )
$content = apply_filters( 'the_content', str_replace( ']]>', ']]>', $another_post -> ID ) );

コンテンツの取得は自信ないけどこんなものでしょうか。
ほかに、抜粋(excerpt)や $more の取得などもありますがまたの機会に。
WordPress の定石だとクエリを発行して投稿オブジェクトを取得してそれをループさせてってなるんですけど、どうも扱いが苦手。それにしてもグローバル変数をこれほど多用しながら、よくもここまでの規模のシステムを維持できるものですね。すごい。個人的にはありえないですわ。

WordPress の thickbox を3箇所(見方によっては2箇所とか6箇所とか)修正したのでメモ。

WordPress の thickbox のグループ利用でハマったこと。バグなのか私の使い方に問題があるのか不明。
きっと皆さん問題になってるのだろうと検索したのですが見当たらないってことは、私の環境または使い方に問題があるのかもしれませんが、一応解決したので同じ問題に当たった方はご参考にしてください。ちなみに、有名な(?)「thickbox.js から @マークを取り除く」ってのではないです。これはもちろん対処済みでした。

(なお余談ですが、WordPress は管理画面で jQuery を多用していて、そのライブラリの thickbox も一般の表示でしっかりと利用できるようにサポートされています。スクリプトとスタイルのハンドルを用意するのみならず、それを一度で呼び出してなおかつマルチサイトでも利用できるような関数として add_thickbox という関数まであります。これをヘッダでコールすれば、wp_head, wp_footer の呼び出し時に必要なスタイルシートとスクリプトが呼び出されます。)

単体表示では”ほぼ”問題なく表示されたのですが、グループ化を行った場合に正常に動作しませんでした。
WordPressのバージョンは 3.1.4 ja
この問題を確認できたブラウザは Firefox 5.0、Chrome 12.0.742.112 m
一方でなんと、 IE9 では動作しました。
ブラウザによって異なるってことは結構微妙な問題なのでしょうか。

まず、あまり重要でない箇所の修正を一点

これはグループ化に関わらない問題で、ブラウザ間の解釈の相違もない単純なものです。
thickboxのラッパー部分で使用する画像(「ロード中」のloadingAnimation.gifと、「閉じるボタン」のtb-close.png)のパスが、相対パス指定になってしまってるので、ページによっては正しくロードされません。(サブディレクトリの下にあるページのみ問題が生じます。)

if ( typeof tb_pathToImage != 'string' ) {
    var tb_pathToImage = "../wp-includes/js/thickbox/loadingAnimation.gif";
}
if ( typeof tb_closeImage != 'string' ) {
    var tb_closeImage = "../wp-includes/js/thickbox/tb-close.png";
}

これはWordPressをデフォルトで使用する場合には問題ないですがパーマリンクをカスタマイズしてURLの階層をひとつでも増やすとNGです。なのでこれは絶対パスに変更せざるを得ないのですが、ここで javascript を用いてURLを決定するコードをあえて書かずに、テンプレートのヘッダに

<script type='text/javascript'>
var siteRootUrl = '<?php echo site_url(); ?>';
</script>

このように記述して、

先ほどの箇所を

if ( typeof tb_pathToImage != 'string' ) {
    var tb_pathToImage = siteRootUrl + "/wp-includes/js/thickbox/loadingAnimation.gif";
}
if ( typeof tb_closeImage != 'string' ) {
    var tb_closeImage = siteRootUrl + "/wp-includes/js/thickbox/tb-close.png";
}

このように修正。このほうが楽だと思います。siteRootUrl という値をほかのスクリプトでも使えますし。というよりも、たぶんWPのバージョンを変更するたびに修正しなくてはならない部類なので、なるべく変更の量を減らしたほうが良いという考えです。

本題

さて話がそれました。肝心の問題はこれではなく、thickbox を rel 属性でグループ化した場合に正しく表示されないということ。
これは修正箇所は3箇所ありまして、この何が不具合を引き起こしているのかは不勉強なため不明です。また、ブラウザによって挙動が異なるようなので、ブラウザの実装に問題があるのかもしれません。どなたか理由がお分かりの方はお教えくださればありがたいです。
いずれにしても上記の環境では画像は一枚も表示されませんでした。スクリプトをalertなどを使って調べた結果、3点に問題が見つかったという次第です。

まず、1箇所目と2箇所目は同じような修正。
93行目と97行目にある &nbsp; を全て削除。これはデザイン的な空白なのでスタイルシートで余白を取る方向で。なぜこれが不具合を引き起こすのか不明ですが、とにかくこれを削る。(たぶん、’&’が問題。)
つぎに、97行目の <a href=’#'>”+thickboxL10n.prev+”</a> を <a href=’#'>&lg;前へ</a> に変更。
つまり 97行目は最終的に
TB_PrevHTML = “<span id=’TB_prev’><a href=’#'>&lt;前へ</a></span>”;
になります。
これで動くはずですが、気になるので同じように thickboxL10n.next の箇所も変更しておきます。

まとめると次のようになります。

変更前

TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>"+thickboxL10n.next+"</a></span>";
(…略…)
TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>"+thickboxL10n.prev+"</a></span>";

変更後

TB_NextHTML = '<span id="TB_next"><a href="#">次へ&gt;</span>';
(…略…)
TB_PrevHTML = '<span id="TB_prev"><a href="#">&lt;前へ</a></span>';

[tsuiki]このあと、インライン表示のコードも大幅に書き換えてカスタマイズした結果、半分近くがリライトされたことになってしまい、何がなにやら。。。jQuery の trim 関数が IE8では非サポートだったってことも知ったり。[/tsuiki]

余談ですが、管理画面で呼び出している thickbox はこれとは別です。上記の操作は管理画面には影響しませんので念のため。

カスタム投稿タイプを表示したときに、原因不明の(rewrite 周りの)おかしな症状が出たのでメモ。

まさにメモ。

原因が何であるかはもとより、症状がどんなものかもよく把握できていないですが、とてもハマってしまったのでメモ。現在は症状は治まりました。

ちなみにこの投稿タイプはサイト公開後に追加で設けたものですが、ほかのものはローカルで動作確認してから全体をアップロードしました。
また、パーマリンク設定は /%postname%/ です。
このあたりにひょっとしたら解決の糸口があったのかもしれません。

で、何が起きたか?

  • あるカスタム投稿タイプを表示すべく、適切なURLを指定しても 404 not found のページが出力される。(header も 404)
  • 短縮URL(例: /?p=1234)と呼ばれるものを入力した場合に、リダイレクト先は正しく遷移した。
  • 同じものをローカルでは正しく表示できた。
  • 問題があるのはひとつの投稿タイプのみで、ほかは正常に動作した。

何をして上手くいかなかったか?

  • 該当する投稿タイプの記事を追加・編集・削除(これはこの後幾度と無く繰り返す)
  • 全てのテーマファイルを削除。その後再インストール。
  • 投稿タイプを定義するためのプラグインファイルを全削除後再インストール。
  • カスタム投稿タイプのパラメータを変えてみる。(投稿タイプ名、support引数)
  • 上手くいってる投稿タイプの定義をコピーし、投稿タイプ名のみ変更してみる。

ほかにも何かやったような気がしましたが忘れました。

で、次のことを行って上手くいきました。

  • パーマリンクの設定で、オプションのカテゴリーベース(もとは空欄のまま)投稿タイプの名前(に限らず何でも良いかもしれない)を入力して更新。
  • 再びパーマリンクの設定のカテゴリーベースを空に戻して更新。

なぜか、このタイミングで上手く表示されました。また、実際は最後の二つの作業の間にサイトを何度も表示させて見たり、該当する投稿タイプの追加・更新・削除を何度も行ったりしましたが、後で再現してみたところ、どうやらこのアクションが引き鉄となって正常に更新される模様。

何が原因で表示されなかったのか、そしてなぜこれで表示されるようになったのか不明ですが、もし同じ症状にあわれた方がいらっしゃったら、一度お試しください。

ps:最初はまさに雲をつかむように不安な手応えでしたが、このあと同じような症状の再現ができ、やはり同じ手順で解消できました。rewriteの設定が上手く更新されていないのかも。私のコードがWordPress準拠になっていないのかも知れず、そのせいでトリガーになるコードが呼び出されていないだけかもしれません。パーマリンク関連の設定をいじることでrewrite関連の値を再設定してるはずなので、そのお陰で解決できているのでしょう。


追加:後日、とても参考になるエントリーを発見。と同時に、私の見立てもあながち間違いではなかったことに安堵。

flush_rewrite_rules( false )

こんな関数があったとは。起動時に毎回呼び出す必要も無いでしょうから、投稿タイプの初回登録時にのみコールするようにしてみよう。

WordPress の URL,ファイルパス取得方法をいろいろと調べてみるためのメモ

WordPressのコアが提供している定義済み定数や関数、メソッドの中から、URLおよびファイルパスをGETするためのものをリストアップしていきます。同種の機能がなんとなく散在している印象があるため、このエントリを使ってメモしていきます。※とりあえず順不同&解説なし。

関数

  • get_bloginfo( $show, $filter )
    $show に対応した値を返す。
  • bloginfo( $show )
    上記の get_bloginfo で取得した値を echo する。
    詳しくはこちら→WordPress の get_bloginfo, bloginfo を詳しく見る。
    Webページに出力する値を中心にまとめられているようです。出力する必要のなさそうなプラグインのディレクトリだとか、管理画面のURLなどは対象外。
  • get_stylesheet_uri()
    =get_bloginfo( ‘stylesheet_url’ )
  • get_stylesheet_directory()
    =get_bloginfo( ‘stylesheet_directory’ )
    現在使用中のスタイルシートのディレクトリパス。管理画面で指定したテーマディレクトリを参照します。親テーマを指定した場合もこれは変わりません。
  • get_stylesheet_directory_uri()
    =get_bloginfo( ‘stylesheet_directory’ )

    使用例

    /* スタイルシートを読み込む. head 内で wp_head() よりも先に記述 */
    $handle = 'my-style';
    $css_url = get_stylesheet_directory_uri() . '/my-style.css';
    wp_register_style( $handle, $css_url );
    wp_enqueue_style( $handle );
  • get_template_directory()
    使用中のテーマディレクトリ。親テーマを定義している場合、この値は親テーマのディレクトリパス。親テーマを指定しない場合、get_stylesheet_directory() と同じ値。
    /wp-includes/default-constants.php で TEMPLATEPATH に、この値が定義される。
  • get_template_directory_uri()
    使用中のテンプレートディレクトリのURL
  • get_theme_roots()
    テーマディレクトリのベースネーム
    (例) /themes
  • get_theme_root()
    =get_bloginfo( ‘template_directory’ )
    テーマディレクトリの絶対パス
    (例) /root/account/public_html/wp-content/themes
  • get_theme_root_uri()
    テーマディレクトリへのURL
    (例) http://example.com/wordpress/wp-content/themes

    • ※使用中のテーマディレクトリのURLは get_bloginfo( ‘template_url’ ) で取得。
      (例) http://example.com/wordpress/wp-content/themes/my-template
    • ※使用中のメインスタイルシートのURLは get_bloginfo( ‘stylesheet_url’ ) で取得。
      (例) http://example.com/wordpress/wp-content/themes/my-style/style.css
  • site_url( $path = ”, $scheme = null )
    = get_bloginfo( ‘wpurl’ )
    ダッシュボードの「WordPress のアドレス (URL)」に設定した値。内部的に次の get_site_url( null, $path, $scheme ) を呼び出している。
  • get_site_url( $blog_id = null, $path = ”, $scheme = null )
    上記のsite_url のもとになる関数。 blog_id の引数を渡せる。
  • home_url( $path = ”, $scheme = null )
    引数を渡さない場合 get_bloginfo( ‘url’ ) と同値。 ‘siteurl’, ‘home’ も同じ値が返るが非推奨
    ダッシュボードの「サイトのアドレス (URL)」に設定した値。
    内部的に、次の get_home_url( null, $path, $scheme ) を呼び出している。
  • get_home_url( $blog_id = null, $path = ”, $scheme = null )
    上記のsite_url のもとになる関数。 blog_id の引数を渡せる。
  • admin_url( $path = ”, $scheme = null )
    管理画面用のURL。get_admin_url( null, $path, $scheme )
  • get_admin_url( $blog_id = null, $path = ”, $scheme = null )
    指定したブログIDの管理画面用のURLが返る。ディレクトリ名の ‘wp-admin/’ は決め打ち。
    フィルタ ‘admin_url’ を適用。
  • plugin_dir_path( $file )
    $file のディレクトリパスが返る。関数名に「plugin」とありますがまったく関係なし。単に ディレクトリパスの末尾にスラッシュをつけたものが返ってきます。しかも末尾は「スラッシュ」固定ですが、それより前にあるセパレータは環境依存のまま。中途半端な印象の関数です。コアシステムでも一切使用されていない意味不明な存在。
    v.3.1現在、デフォルトでこの関数を参照しているのは  wp-multibyte-patch プラグインのみ。dirname() を用いたほうが絶対にいいだろと思う。歴史的な意味があったのか知らん。
  • plugin_dir_url( $file )
  • plugins_url( $path = ”, $scheme = null )
    プラグインの「ルートディレクトリ」までのURLを返す。
    末尾にスラッシュは付かない。
  • plugin_basename( $file )
    引数で渡したファイルパスの文字列から plugin の「ルートディレクトリ」以下のパスを切り取って、ディレクトリセパレータを’/'に変換して返す。先頭にセパレータは付かない。
    プラグインのサブディレクトリに含まれているファイルにも対応。
    pluginディレクトリに含まれていないファイルパスを渡した場合は、切り取りは一切行われずにセパレータの変換のみを行う。

    使用例

    プラグインファイルのURLを取得する。

    $plugin_file_url = plugins_url() . '/' . plugin_basename( __FILE__ );  // __FILE__ までのURLが返る。間のスラッシュを忘れないこと。
    // 同じことは以下のようにも記述できる
    $plugin_file_url = plugins_url( plugin_basename( __FILE__ ) );
    // これは間違い
    // $invalid_url = plugins_url( __FILE__ );
  • content_url( $path = ” )
  • includes_url( $path = ” )
  • network_site_url()
  • network_home_url()
  • network_admin_url()
  • wp_login_url( $redirect = ” )
  • wp_logout_url( $redirect = ” )
  • wp_lostpassword_url( $redirect = ” )

定数

  • ABSPATH
  • ADMIN_COOKIE_PATH
  • PLUGINDIR
  • WPINC
  • WP_PLUGIN_URL
  • WP_PLUGIN_DIR
  • WPMU_PLUGIN_DIR
  • WPMU_PLUGIN_URL
  • WP_CONTENT_URL
  • WP_CONTENT_DIR
  • COOKIEPATH
  • MUPLUGINDIR
  • SITECOOKIEPATH
  • PLUGINS_COOKIE_PATH
  • WP_LANG_DIR
  • LANGDIR
  • UPLOADBLOGSDIR
  • UPLOADS
  • BLOGUPLOADDIR
  • TEMPLATEPATH
  • STYLESHEETPATH

クラスメソッド

class WP_Filesystem_Base

ファイルシステムを操作するための基底クラス。

  • WP_Filesystem_Base::abspath()
  • WP_Filesystem_Base::wp_content_dir()
  • WP_Filesystem_Base::wp_plugins_dir()
  • WP_Filesystem_Base::themes_dir()
  • WP_Filesystem_Base::find_base_dir($base = ‘.’, $echo = false)
  • WP_Filesystem_Base::get_base_dir($base = ‘.’, $echo = false)
  • WP_Filesystem_Base::find_folder($folder)
  • WP_Filesystem_Base::search_for_folder($folder, $base = ‘.’, $loop = false )
  • WP_Filesystem_Base::gethchmod($file)
  • WP_Filesystem_Base::getnumchmodfromh($mode)
  • WP_Filesystem_Base::is_binary( $text )

継承クラス

  • WP_Filesystem_Direct
  • WP_Filesystem_FTPext
  • WP_Filesystem_ftpsockets
  • WP_Filesystem_SSH2

参考ページ

WordPress で全てのユーザー情報を取得する関数は get_users

きっとあるに違いないと思って探したらやっぱりあったので、同じく探し中の人が1秒でも得できるためにメモ。※ただし v. 3.1.0 からの新機能です

ユーザーの一覧を取得したいときは、get_users という関数がコアで提供されているのでそれを利用すると良いです。

しかし、wp_users のテーブルから任意の行・カラムの取得をするための関数であり、メタ情報などとのアソシエーションは組まれていませんので、より詳しいデータを取得したい場合は独自にクエリを発行するか、この関数の結果を元に再度 get_userdata をコールするしかないでしょう。

日本語リファレンスは無いので本家のリンク→http://codex.wordpress.org/Function_Reference/get_users

思いつくパラメータはすべて網羅されているのではないかと思います。

$args = array(
    'blog_id' => $GLOBALS['blog_id'],
    'role' => ,
    'meta_key' => ,
    'meta_value' => ,
    'meta_compare' => ,
    'include' => array(),
    'exclude' => array(),
    'orderby' => 'login',
    'order' => 'ASC',
    'offset' => ,
    'search' => ,
    'number' => ,
    'count_total' => true,
    'fields' => 'all',
    'who' =>
 );

上記は codex のまんまコピーなんですが、’count_total’ に関しては、この関数の中で強制的に false に上書きされています。何故かは不明。現時点の暫定処理かも。

ソースを見てみるととても簡単な実装で、これまた初耳の WP_User_Query というクラスの get_results を呼び出しています。

どちらも Version 3.1.0 からの新規追加実装なのでバージョンにはご注意を。

※あと、よく分からないのが’who’ というパラメータですが、’authors’という文字を渡した場合に限り、なんだかんだとおまけの情報を付加してくれる模様ですが、未確認です。将来的にこの辺拡張されるのかもしれません。

戻り値はオブジェクトの配列。

アクション・フック activate_{$PLUGIN_NAME} は実際どんな値なのか?

プラグインを有効化させるタイミングで何らかの処理を行いたい場合二通りのやり方があって、ひとつは register_activation_hook を使う方法。これは公式マニュアルにも丁寧に解説があって使いやすい。

もうひとつは、そのマニュアルを読んで知ることになったわけですが、activate_{$PLUGIN_NAME} という名前のアクションフックに引っ掛ける方法。マニュアルにはこちらはあまりお勧めではないという記述がされていますが興味がわいたので、このフックはどういった値なのか調べました。

すると、この $PLUGIN_NAME には、プラグインディレクトリから見たプラグインファイルまでのパスが記述されていました。

たとえば /wp-content/plugins/my-plugin.php なら

activate_my-plugin.php

/wp-content/plugins/my-dir/my-file.php なら

activate_my-dir/my-file.php

という按配です。っていうか、 register_activation_hook のコメントに記述してあった。

/**
 * Set the activation hook for a plugin.
 *
 * When a plugin is activated, the action 'activate_PLUGINNAME' hook is
 * activated. In the name of this hook, PLUGINNAME is replaced with the name of
 * the plugin, including the optional subdirectory. For example, when the plugin
 * is located in wp-content/plugin/sampleplugin/sample.php, then the name of
 * this hook will become 'activate_sampleplugin/sample.php'. When the plugin
 * consists of only one file and is (as by default) located at
 * wp-content/plugin/sample.php the name of this hook will be
 * 'activate_sample.php'.
 *
 * @package WordPress
 * @subpackage Plugin
 * @since 2.0
 *
 * @param string $file The filename of the plugin including the path.
 * @param callback $function the function hooked to the 'activate_PLUGIN' action.
 */
function register_activation_hook($file, $function) {
	$file = plugin_basename($file);
	add_action('activate_' . $file, $function);
}

ところでこの二通りの方法の関係は如何に?なぜ二通りもあるのか?ってことですが、上述したように「 プラグイン名とは何ぞや?」ということをいちいち調べなくても済むようにあとで register_activation_hook が用意されたんですかね。