Blogブログ

Category: wordpress

wordpress: add new column on admin panel.

wordpress管理画面の、投稿一覧に新しくカスタムフィールドを表示する列を追加してくれと言われたら。 /** * 新しい列を日付の前に追加。 */ function add_cfield_on_posts_columns($columns) { global $post; if ( $post->post_type == ‘post’ ) { $date_escape = $columns[‘date’]; unset($columns[‘date’]); $columns[‘new_custom_field’] = “Custom field”; $columns[‘date’] = $date_escape; } return $columns; } /** * 作った列にカスタムフィールドの値を表示 */ function show_cfield_on_the_new_column( $column_name ) { global $post; $columns = array( array( ‘col’ => ‘new_custom_field’, ‘cf’ => ‘custom_field_name’ ), ); […]

Godaddy contact form 7 problem

USで有名なサーバーGodaddyで、contact form 7が使えない問題があった。 解決方法をメモ。 上手く行った設定は以下。 参考:http://angstrey.com/index.php/2009/04/22/how-to-send-e-mail-with-wordpress-from-godaddy-windows-hosting/ 1.プラグインディレクトリより、WP-Mail-SMTPをダウンロードしてインストール。 2.Settingにて、 From Mail : godaddyでホストされているメールアドレス。 From Name : お好きな名前を。 Mailer : “Send all WordPress emails via SMTP”を選択。 SMTP Host : relay-hosting.secureserver.net SMTP Port : 25 Encryption : “No encryption.”を選択。 Authentication : “No: Do not use SMTP authentication.”を選択。 以上を設定したら、一度テストメールを送ってみる。 結果が、’bool(true)’と返ってくkれば成功。 続いて、Contact form 7側での設定時に、 From:のところに、さっきのFrom Mail :で設定したものに設定する。 これで、問題は解決。

wordpressでカスタム投稿タイプの記事に.htmlの拡張子をつける。

まずまずの頻度である「記事に.hmltをつけたい!」という要望。 投稿だけを使うならパーマリンク設定でOK!だが、カスタム投稿タイプの場合は出来ない。 便利なプラグインもあるのだが、 http://wordpress.org/plugins/custom-post-type-permalinks/ テーマに組み込めないか調べてみたところ、こんな記事を見つけられたのでメモ。 http://wordpress.stackexchange.com/questions/59024/add-html-dot-html-extension-to-custom-post-types 1. rewrite_rules_array フィルターにcustom post type分のrewrite ruleを追加。 add_action('rewrite_rules_array', 'rewrite_rules'); function rewrite_rules($rules) { $new_rules = array(); foreach (get_post_types() as $t) $new_rules[$t . ‘/(.+?)\.html$’] = ‘index.php?post_type=’ . $t . ‘&name=$matches[1]'; return $new_rules + $rules; } 2. custom post type でのURLフォーマットを指定。 post_type_linkフィルターを利用。 add_filter('post_type_link', 'custom_post_permalink'); // for cpt post_type_link (rather than post_link) function custom_post_permalink ($post_link) […]

wordpress プラグインの多言語化

wordpress 多言語化 ■ プラグインファイル内の記述 前提として、mypluginというプラグイン名で、langという場所に言語ファイルを保存するとする。 プラグインのメインとなるファイルに、 load_plugin_textdomain(‘myplugin’, false, ‘myplugin/lang’); と記述。これで言語ファイルを読み込む設定が出来た。 ソース上の多言語化したいテキストには、以下の様に記述。第二引数には、上のload_plugin_textdomainで設定した第一引数を記述する。 __(“text”, ‘myplugin’) -> “text”を返す _e(“text”, ‘myplugin’) “text”を出力 上記が正しく設定されていれば、myplugin/lang に置かれている言語ファイルを読み込むはず。 ■言語ファイルの作成 ここからはpoeditを使う。 予め、poeditをインストールしておく。 http://www.poedit.net/download.php まずはcatalogを新規作成。 Source pathは、例えばxamppで作業してる場合は base path -> C:\xampp\htdocs\my_wordpress\wp-content\plugins\myplugin paths -> . のように設定。 次にSources Keywordsに下の2つを追加。 add _e, __ この状態でまずdefaultとして保存。この時に拡張子を.POTとする。 一旦閉じて、新たにnew catalog from POTで先に作成したdefault.POTを元に作成する。 PathとKeywordの設定を行い、保存するときに myplugin-ja.poの形式で保存する。 すると自動で翻訳該当のテキストを抽出してくれるので、あとはpoeditにしたがって入力していく。

wordpress ckeditor を使う

WordPressでCKeditorを使う。 まず便利なのが、テンプレート機能。 幾つかテンプレートを用意してあげれば、ユーザにも使いやすいはず。 編集するファイルはこちら。 plugins/ckeditor-for-wordpress/ckeditor.templates.js そして、ありすぎると逆に見づらいのがエディタのボタン。 各ボタンの名称はここで確認するとして、 http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Toolbar wordpress fullを選んだ時に表示させたくないものを、下で編集。 plugins/ckeditor-for-wordpress/ckeditor.config.js (line 50辺り) テンプレート機能は幅広いユーザに使いやすいんじゃないかな、と思ってます。

CPIサーバーへのWordPress設置について

CPIサーバではそのままだとWordpressが動かなかったのでメモ。 動かすために必要な事はこの3つ。 ・phpを使用可に ・文字コードをUTF8へ(そのままだと日本語入力できない) ・Rewrite機能をONに(パーマリンク設定を可能にするため) htaccessとphp.iniを使います。 記述は以下を参考に。 htaccess AddHandler x-httpd-php528 .php suPHP_ConfigPath /usr/home/xxxx/html Options +FollowSymLinks RewriteEngine on ※補足 suPHP_ConfigPath /usr/home/xxxx/html の部分は、公開ディレクトリへのフルパスが入ります。 わからない時は、この場合だと/へ下記を記述したphpファイルをアップして、アクセスしてみます。

wordpress 関数を外部phpで使う

ちょっと探したのでメモ。 wordpressの関数を外部PHPから使う方法。 require(‘../wp-blog-header.php’); 参考 Codex:http://codex.wordpress.org/Integrating_WordPress_with_Your_Website

wordpress マルチサイト ドメイン変更手順

予定があるので備忘録。 マルチサイト化したwordpressの、ドメインを変更したら以下の手順で変更する。 ローカル環境でのテストの記録。 今回は本サイトのはいかに、/test/というマルチサイトを持ち、 そしてドメインを、localhost -> 192.168.24.55へ変更する想定。 ※バックアップを忘れずに ■p-config.php define(‘DOMAIN_CURRENT_SITE’, ‘localhost’); ↓ define(‘DOMAIN_CURRENT_SITE’, ‘192.168.24.55’); ■データベース まず、localhost も文字列が入っているテーブルを検索。 変更が必要そうなものは、以下がヒットした。 wp_2_options wp_options wp_blogs wp_site wp_sitemeta 1.wp_opstions 各サイトのwp_options table を変更。 マルチサイトが増えるに連れて、 wp_n_optionsとなっているはず。 // home site UPDATE wp_options SET option_value = ‘http://192.168.24.55’ WHERE option_name = ‘home’; // multi site 2 UPDATE wp_2_options SET option_value = ‘http://192.168.24.55/test’ WHERE option_name = […]

is_main_query, pre_get_post を使う。

is_main_query, pre_get_post を使う。 これまで、Wordpressのテーマカスタマイズではquery_postsを使って、取得するポストの条件を定義してDBへアクセス、という手法を使っていた。 が、これだとDBへ2度アクセスする事になり、パフォーマンスの低下を招くことになる。 そこで使うのがpre_get_posts フックとis_main_query()関数。 まずpre_get_postsだが、これはテンプレートファイルにアクセスする前に、メインクエリを変更する為のフックだそう。 そして、is_main_query()関数。 これは、Wordpress標準のクエリなのか、テンプレートから呼び出されたのかを判別するもの。 この2つを使い、function.phpに以下のように記載することで、テンプレート呼び出し前にメインクエリに渡すパラメータを定義出来る。 要は奏することで、DBアクセスを一度にしてしまおうという事。 例えば、以下の様な形で使う事ができる。 function get_my_custom_posts( $query ) { /* 1 */ if ( is_admin() || ! $query->is_main_query() ){ return; } /* 2 */ if ( is_home() && $query->is_main_query() ) { $query->set( ‘posts_per_page’, 1 ); return; } /* 3 */ if ( is_post_type_archive( POSTTYPE ) && […]

Magic fields

WordPressのプラグイン、Magic Fields 2のレビュー。 このプラグイン、投稿タイプ設定はregister post typeのパラメーターが殆ど使用出来るのと、カスタムフィールドの増減も出来るのでとても便利。 では備忘録。 値の取り出し方は複数あるが、とりあえず以下について。 get() get_image() get_group() get() get ($fieldName, $groupIndex=1, $fieldIndex=1, $readyForEIP=true,$post_id=NULL) $fieldName: フィールド名 $groupIndex: グループのインデックス(1~) $fieldIndex: フィールドのインデックス(1~) $readyForEIP: テキスト入力系のフィールドの時に、フロントから編集可能にする $post_id: ループ外で記事IDを指定して使える 複製可能なフィールドにも使えるけれど、複製しないフィールドに使う場合が多いかな。 get_image get_image ($fieldName, $groupIndex=1, $fieldIndex=1,$tag_img=1,$post_id=NULL,$override_params=NULL) $fieldName: フィールド名 $groupIndex: グループのインデックス(1~) $fieldIndex: フィールドのインデックス(1~) $tag_img: tag[1]で出力するか、url[0]で出力するか。 default = 1 post_id: ループ外で記事IDを指定して使える $override_params: かなりたくさんのパラメータがあり、ここで指定したものは他をオーバーライドするようだ。 ※この部分はwikiがスパニッシュなので、間違ってるかも width=200, height=200, zoom-crop=1, JPEG compression (1=worst, […]