wordPressの風情の続き
wordPress3.0について、以前wordPress3.0の風情 - ミショニポーというエントリを書きました。
それから大分経って、もう少し重箱の隅も気になる今日この頃、とりあえずリストにして、答えの出たところは、ここに書き足そうかなという趣旨で、
いずんなっかわがんねぇげっとも、すこっづつやってみっかなぁーどおもってんのしゃ
誰が あがるいひと いねがなぁーど おもって、いっつも たづねであるぐんだけど、ながながねぇー
やっぱ あちゃらせい だがらねぇ んでもながながDELUXだがらっしゃー、はなさいねんだでば
ところで、wordPress3.0関数検索できます
wordPress2.9.2とwordPress3.0のPHPDocumentor全文検索です。
ところで、3.0になって、新しい hook
WordPress 3.0 - List of all hooks and filters -- Adam Brown, BYU Political Science
この辺り どうなんだろうと思ったところを書き出し。
upload ディレクトリ
ネットワークでは、アップロードディレクトリの設定画面は出ない。
ネットワークで複数ブログを作ると
最初のブログは
http://www.example.com/wp/wp-content/uploads/juice-150x150.jpg
にアップロード
2個目のブログは、
http://www.example.com/wp/subdir/wp-content/files/juice-150x150.jpg
が画像リンク先になりますが、実際の画像は、
http://www.example.com/wp/subdir/wp-content/blogs.dir/2/files/juice-150x150.jpg
(2はブログid)
国際化 _ex() を導入
テキストを含んだ翻訳後 echo するため、_e() と _x() のハイブリッドである _ex() を導入
_e
_n __ngettext 単数 複数 の翻訳を持つ
_x 文脈
I18n for WordPress Developers - WordPress Codex 日本語版
get_index_template() を導入
子テーマが親テーマの index.php を上書きできるよう get_index_template() を導入
子テーマで、index.phpがあれば、そのパスを、なければtwentyten(デフォルト設定の)index.phpのパスを返す模様
get_template_part
(ヘッダ・サイドバー・フッタ以外の) 一般的なファイルをインクルードするための
<?php get_template_part( 'loop', 'index' ); ?> wp-content/themes/twentytenchild/loop-index.php wp-content/themes/twentytenchild/loop.php wp-content/themes/twentyten/loop-index.php wp-content/themes/twentyten/loop.php 子テーマにloop.phpがなければ、親テーマのloop.phpを使う
それぞれひとつのパラメータをもてる get_header() get_footer() get_sidebar() get_search_form()
応用
<?php if ( is_home() ) : get_header('home'); elseif ( is_404() ) : get_header('404'); else : get_header(); endif; ?>
home and 404 headers は、header-home.php and header-404.php を呼ぶでしょう
<?php comments_template( '/short-comments.php' ); ?>
comments_template関数引数を省略すると、comments.phpを呼びます
Function Reference/comments template « WordPress Codex
<?php wp_head(); ?>
Function Reference/wp head « WordPress Codex
使い方: <?php do_action('wp_head'); ?> または <?php wp_head(); ?>
<?php wp_footer(); ?>
Function Reference/wp footer « WordPress Codex
wp_meta
広告スイッチャーやタグクラウドを表示させる。
使い方: <?php do_action('wp_meta'); ?> または <?php wp_meta(); ?>
comment_form
comments.php および comments-popup.php のコメントフォーム終了タグ () の直前に含める。
プラグインによるフック使用の例: コメントプレビューを表示させる。
使い方: <?php do_action('comment_form', $post->ID); ?>
<?php wp_nav_menu($args); ?>
テンプレートタグ/wp nav menu - WordPress Codex 日本語版
<?php wp_page_menu('arguments'); ?>
テンプレートタグ/wp page menu - WordPress Codex 日本語版
body_class()
post_class()
comment_class()
Theme Development « WordPress Codex
<?php count_user_posts( $userid ); ?>
Function Reference/count user posts « WordPress Codex
<?php $users = array(1, 3, 9, 10); $counts = count_many_users_posts($users); echo 'Posts made by user 3: ' . $counts[3]; ?>
Function Reference/count many users posts « WordPress Codex
<?php get_the_author_link(); ?>
Function Reference/get the author link « WordPress Codex
taxonomy が wp_tag_cloud()でも扱えるようになった
wp_tag_cloud( array( 'taxonomy' => 'actor', format => 'list' ) );
taxonomy が 既存の wp_list_categoriesで扱えるようになった
<?php //list terms in a given taxonomy using wp_list_categories (also useful as a widget if using a PHP Code plugin) $taxonomy = 'actor'; $orderby = 'name'; $show_count = 0; // 1 for yes, 0 for no $pad_counts = 0; // 1 for yes, 0 for no $hierarchical = 1; // 1 for yes, 0 for no $title = ''; $args = array( 'taxonomy' => $taxonomy, 'orderby' => $orderby, 'show_count' => $show_count, 'pad_counts' => $pad_counts, 'hierarchical' => $hierarchical, 'title_li' => $title ); ?>
home_url() を導入
schemeが’http’ か ‘https’の場合、is_ssl()は、オーバーライドします。
サイト指定のURLを取得するget_home_url タグを使用します。
- get_home_url
- get_site_url
- edit_tag_link
- bloginfo
- edit_comment_link
loopのなかで
Function Reference/the modified date « WordPress Codex
$before、$after、$echo パラメータが追加
update_blog_details() を導入
/** * Update the details for a blog. Updates the blogs table for a given blog id. * * @since 3.0.0 * * @param int $blog_id Blog ID * @param array $details Array of details keyed by blogs table field names. * @return bool True if update succeeds, false otherwise. */ function update_blog_details( $blog_id, $details = array() ) { global $wpdb; if ( empty($details) ) return false; if ( is_object($details) ) $details = get_object_vars($details); $current_details = get_blog_details($blog_id, false); if ( empty($current_details) ) return false; $current_details = get_object_vars($current_details); $details = array_merge($current_details, $details); $details['last_updated'] = current_time('mysql', true); $update_details = array(); $fields = array( 'site_id', 'domain', 'path', 'registered', 'last_updated', 'public', 'archived', 'mature', 'spam', 'deleted', 'lang_id'); foreach ( array_intersect( array_keys( $details ), $fields ) as $field ) $update_details[$field] = $details[$field]; $wpdb->update( $wpdb->blogs, $update_details, array('blog_id' => $blog_id) ); // If spam status changed, issue actions. if ( $details[ 'spam' ] != $current_details[ 'spam' ] ) { if ( $details[ 'spam' ] == 1 ) do_action( "make_spam_blog", $blog_id ); else do_action( "make_ham_blog", $blog_id ); } if ( isset($details[ 'public' ]) ) update_blog_option( $blog_id, 'blog_public', $details[ 'public' ], false ); refresh_blog_details($blog_id); return true; }
<?php $post = $wp_query->post; if ( in_category( '9' ) ) { include( TEMPLATEPATH . '/single2.php' ); } else { include( TEMPLATEPATH . '/single1.php' ); } ?>
Class Reference/WP Query « WordPress Codex
テンプレートタグ/query posts - WordPress Codex 日本語版
DISALLOW_FILE_MODS
コア、テーマ、プラグインファイルの変更する動作をすべて無効化する
WP_DEFAULT_THEME
新サイトをインストールする際のデフォルトテーマを設定する
3.01では、twentyten がセットされていました。
デフォルト投稿が default_content、default_title、default_excerpt フィルターを通過するように変更。
これで、新規投稿時にだけ、値をセットすることができる。
/** * 新規ポストを登校する場合のデフォルト値のセット * default_content(記事本文) * default_excerpt(デフォルトの記事抜粋) * default_title(記事タイトル) * * * */ add_filter( 'default_title', 'title_filter' ); function title_filter($text){ return $text.date("d h:i:s"); }
STYLE_DEBUG 定数を削除。SCRIPT_DEBUG をスクリプト・CSS 両方に対応
圧縮ファイルを読み込むか、通常のファイルを読み込むか選べる模様
???
デフォルトで圧縮 (minified) バージョンのスクリプトを読み込み、define('SCRIPT_DEBUG', true); によって開発バージョンを使うことができるようにする
これにより、wp-includes/js および wp-admin/js ディレクトリの scriptname.dev.js ファイルを編集できます。
<?php /** * WordPress scripts and styles default loader. * * Most of the functionality that existed here was moved to * {@link http://backpress.automattic.com/ BackPress}. WordPress themes and * plugins will only be concerned about the filters and actions set in this * file. * * Several constants are used to manage the loading, concatenating and compression of scripts and CSS: * define('SCRIPT_DEBUG', true); loads the development (non-minified) versions of all scripts and CSS, and disables compression and concatenation, * define('CONCATENATE_SCRIPTS', false); disables compression and concatenation of scripts and CSS, * define('COMPRESS_SCRIPTS', false); disables compression of scripts, * define('COMPRESS_CSS', false); disables compression of CSS, * define('ENFORCE_GZIP', true); forces gzip for compression (default is deflate). * * The globals $concatenate_scripts, $compress_scripts and $compress_css can be set by plugins * to temporarily override the above settings. Also a compression test is run once and the result is saved * as option 'can_compress_scripts' (0/1). The test will run again if that option is deleted. * * @package WordPress */
コーディング基準の修正:
変数にキャメルケースを使用しない。変数にはすべて小文字を使用
WP_ALLOW_REPAIR
バージョン 2.9 から自動データベース最適化対応が含まれるようになりました
EMPTY_TRASH_DAYS
define('EMPTY_TRASH_DAYS', 30 ); // 30日
バージョン 2.9 からゴミ箱に入っている期間の設定
WP_MEMORY_LIMIT
バージョン 2.5から、WPHP が消費するメモリの最大値を設定
定数一覧の表示
if(is_admin()){ echo "<pre>"; print_r(@get_defined_constants()); echo "</pre>"; }
デバッグ
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); //seved wp-content/debug.log define('WP_DEBUG_DISPLAY',true); define('SCRIPT_DEBUG', true);
define( 'SAVEQUERIES', true );
http://www.andrewnacin.com/2010/04/23/5-ways-to-debug-wordpress/
$queries
You may save all of the queries run on the database and their stop times by setting the SAVEQUERIES constant to TRUE (this constant defaults to FALSE). If SAVEQUERIES is TRUE, your queries will be stored in this variable as an array.
@ini_set('log_errors','On'); @ini_set('display_errors','Off'); @ini_set('error_log','/home/example.com/logs/php_error.log');
wp-config.php の編集 - WordPress Codex 日本語版
add_action( 'all', create_function( '', 'var_dump( current_filter() );' ) ); and ‘shutdown’ hooks
デバッグ定数を試すと、WP_DEBUGはコアファイルのエラーを表示するが、テーマファイルなどのエラーは発見できないことが多い。
この倍は、エラーログの書き出しを行うと、テーマファイル内のパースエラーなどをチェック出来ることが確認できた。
WP_DEBUGだけでは、エラーが表示されないというブーイングが結構あると思うが、併用が肝心と思う。
MagpieRSS を非推奨化し、代わりに Simplepie を使用 Snoopy を非推奨化
備忘
optionsテーブルを表示するショートカットアドレス
http://www.example.com/wp3/sub/wp-admin/options.php