Archive for the 'WP Tips' Category

Memo:タブの吐き出し・・・9/3

cleanuptheworld

 
タブを開いてばかりでブラウザが片付かないのでここで吐き出しておく。
ところで、Googleの画像検索って、以前はもう少しお上品だと思ったんだけど、Baiduや Naverの悪い影響か、「吐き出し」みたいな検索でも結構アダルティなグロい画像を出してくるので、要注意!

  1. clearは「floatの解除」ではない
    そうだ、そうだ。『floatの解除は float:none』
  2. max-width
    max-widthを指定したら、<img width=”nn” />が効かなくなったので、注意。style=”width:nnpx;”は大丈夫。

    追記:max-widthのせいじゃなくて、with:auto が効いていたせいだと思う。

  3. WordPress PHP Exec Plugin
    WordPressの投稿やページの中で PHPのコードを書けるようにするプラグイン。勝手に入るやつがポピュラーだけど、入れたいところに特別なタグを書くやり方の方が好きです。

    
    
    
    
  4. テンプレートタグ/next post link
    3番目と4番目のパラメータはめったに使わないのでメモ。

    in_same_cat
      (論理値) 表示している記事と同じカテゴリーの次の記事を表示するかどうかを設定。
      TRUE の場合、同じカテゴリーの記事だけが表示されます。FALSE (デフォルト)
    
    excluded_categories
      (文字列) 表示させたくない記事のカテゴリー ID の番号。
      複数のカテゴリーを除外する場合は コンマを使って区切るようです (例: '1, 5, 15')。
    

WordPress3:あとで書くかもしれないTips

 
ブラウザのタブが溜まりまくりなので、さっさと整理するためにここで一度吐き出しておきます。
といいつつ、書く前に閉じちゃったものがたくさんあって、残っているのは Twitter Tools という大物だけなんですけどね。

Twitter ウィジェット

twitter

 
Twitter ウィジェットについてのちょっとした Tips。
そんなん当たり前やん、という方はヌルーで。

  • フォントサイズが指定できない
    くそー、CSSで指定してんのに何で font-size変わらないんだよ!
    とお嘆きの貴兄。bodyタグの font-sizeや font-familyを強制的に使うみたいですよ。お試しあれ。(bodyじゃないかもしれませんが、とにかくベースの方の要素です)
  • プロフィール画像とIDやタイトルが上下に分かれる
    これは純粋に CSSの問題です。H3タグや H4タグにはよく clear:both; が入っていると思いますので、これを無効にしてください。

    .twtr-hd h3, .twtr-hd h4 {
      clear:none;
    }
    
  • WordPressのウィジェットとして貼りたい
    ハイハイ、PHP Code Widgetプラグインを入れてください。
    Twitter ウィジェットからコピペした JSコードは functions.php で関数にでもして。それを PHP Code Widgetから呼び出します。

    function twitter_widget() {
    ?>
    
    
    new TWTR.Widget({
      version: 2,  type: 'profile',  rpp: 4,  interval: 6000,  width: 'auto',  height: 300,
      theme: {
        shell: {    background: '#17375e', color: '#ffffff' },
        tweets: { background: '#305378', color: '#ffffff', links: '#418a21' }
      },
      features: {
        scrollbar: false, loop: false, live: false, hashtags: true, timestamp: true,
        avatars: false, behavior: 'all'
      }
    }).render().setUser('hogehoge').start();
    
    <?php
    }
    

    本題から外れますが、この functionの書き方、目から鱗と違います?
    こういうのを書くとき、いままでは echoで書いたり、ヒアドキュメントにしたりしてたんですが、?>で PHPを閉じちゃって、HTMLをそのまま書いて最後に<?phpで戻すなんて、なんという荒業なんでしょう! と最初みたとき、びっくりしました。

moファイルを修正

wordpress

WordPressに限ったことじゃないんだけど、他人さまの翻訳ファイル(.mo)を使わせていただいていて、「ちょっとここの訳はなぁ」と思うこともたまにはあると思います。
明らかな間違いだったら、作者に教えてあげるのが親切だと思いますが、自分が使いたい用途が少し特殊で、そのときだけ「こういう言い回しになっててほしいな」ということもあるんじゃないでしょうか?
 
そういうときに、.poファイルがついていれば、Poeditでオレオレ翻訳ファイル(.mo)を作ってチョチョイのチョイでいいんですが、往々にして作者の方はそこまで親切じゃないので、バイナリの .moファイルだけしか付いてこないという場合も結構あります。
そういう場合は、コレ(↓)。

cd C:\Program Files\Poedit\bin\
msgunfmt.exe C:\tmp\hoge.mo -o C:\tmp\hoge.po

これで .poファイルが手に入ります。あとは Poeditで好きにするだけ。
保存のときにこんなエラーが出ますが、.moファイル自体はちゃんと作られてます。

5:07:20: C:\tmp\hoge.po:269: message catalog has plural form translations...
5:07:20: C:\tmp\hoge.po:2: ...but header entry lacks a "plural=EXPRESSION" attribute
5:07:20: C:\tmp\hoge.po:269: message catalog has plural form translations...
5:07:20: C:\tmp\hoge.po:2: ...but header entry lacks a "nplurals=INTEGER" attribute
5:07:20: msgfmt: found 2 fatal errors

WordPress3:ビギナー向けTips-1

 
いままで、WordPress-mu 2.7 でサイトを構築していたので、WordPress 3.0.1 にしたら、テーマ関係がガラッと変わっていてびっくり。DB回りは大して変わってないのに。
というわけで、『ええー、こんなことも知らないの?』ということを中心にメモっていきます。

  • 子テーマ
    WP3には子テーマというやつができたらしい。いままで使いたいテーマをコピーして、それをシコシコ直していたんだけど、それはお行儀悪いから『親は誰それで、自分は誰それの子供です』と宣言して使うようになったらしい。なるほど、PHPerにも倫…(以下自主規制)
    詳しくは、子テーマを見てもらうことにして、簡単にいうと、/wp-content/themes の下に子テーマのディレクトリを作って、その中に style.css を入れればいいと。
    そんでもって、style.css の頭にこう書いておくと。

    /*
    Theme Name:  kid
    Template:        twentyten
    */
    @import url('../twentyten/style.css');
    

    これで、WP3デフォルトの twentytenの子供ですよということです。うんじゃ、テンプレート自体直したいときはどうすんのというのはまた別で。もちろんできます。

  • 子テーマの function.php
    これは、親テーマの前に読み込まれるようになっています。同じ名前があった場合、親テーマの関数が、こういうのをちゃんとやってくれてると二重定義になりません。

    
    

    子テーマに出ていたサンプルはまさにいつもいつも使うやつなので、助かりました。こうやってやればスマートなんだ。

    <?php
    function favicon_link() {
        echo '' . "\n";
    }
    add_action('wp_head', 'favicon_link');
    ?>
    

    サンプルの favicon.ico はルートでしたが、通常は子テーマの中に置くので(マルチサイトなので)、ディレクトリを付けておきました。
    従来の ’template_url’ だと親テーマ(この場合、twentyten)のディレクトリをもってくるのでNGです。

WordPress3:マルチドメイン対応

重い腰を上げて、WordPress 3.0.1をインストールしました。インストール自体はいつにも増して簡単です。
ただ、2.9 by PostgreSQL はコアに手を入れすぎているので、アップデードはできそうになく、エクスポートを試みましたが一瞬でエラーになったので、やらなくてよかったなぁと。
2.7.1 by MySQL は、以前 2.9 にアップデートしようとして失敗した覚えがあるので、これも無理っぽいかなと。こちらはエクスポートできるので、地道に1つずつ移していけばいいかな。
 
ということで、普通に WordPress 3.0.1を新規インストールしたので、それをマルチドメイン対応にしていきたいと思います。

  1. WordPress3のダウンロード
    WordPress 日本語ローカルサイトからダウンロード。パーミッションとかをすごく気にしないといけないわけではないので、.zipで解凍したものをサーバに持っていってもいいと思います。もちろん、.tar.gz を wgetするのが正統派ですが。


  2. データベースの作成
    MySQLに新しいDBをクリエイトしておきます。

    $ mysql -u root -p
    mysql> create database wordpress3;
    mysql> grant all on wordpress3.* to 'wpadmin'@'localhost' identified by 'password';
    

  3. 設定ファイル(wp-config.php)
    ダウンロードしたファイルを解凍すると、ルート・ディレクトリに wp-config-sample.php があります。これをエディットして、以下のところを修正して、wp-config.php として保存します。(他のところはデフォルトのままでOK)

    define('DB_NAME', 'wordpress3');
    define('DB_USER', 'wpadmin');
    define('DB_PASSWORD', 'password');
    

    認証用ユニークキー(’AUTH_KEY’ ~ ‘NONCE_SALT’)は、WordPress.org の秘密鍵サービスを使って変えておきましょう。


  4. Apacheの設定
    WordPressをインストールするためには、/wp-admin/install.php をブラウザで開かないといけないので、WordPressのファイルを置いたサーバのディレクトリを DocumentRoot にする Apacheのエントリ(ドメイン)を作らないといけません。

    
      ServerName hoge.jp
      ServerAlias *.hoge.jp
      DocumentRoot /home/www/wordpress3/
    
    

    ここでは、hoge.jp でアクセスにいくと、/home/www/wordpress3/ を見に行くようにしました。Apacheの再起動は忘れずに。(restartでなくて reloadでいいと思うけど)


  5. WordPress3のインストール
    http://hoge.jp/wp-admin/install.php でOKです。


  6. マルチドメイン化
    WordPress3ではネットワークと呼んでる機能です。ざっと見たところ、WordPress-muと変わりありませんね。WordPress本体にマージされたということが重要なんでしょうね。
    さて、ネットワーク機能を使用するためには、wp-config.php に以下の記述を追加します。

    define ('WP_ALLOW_MULTISITE', true);
    

    そうすると、ダッシュボードの「ツール」に「ネットワーク」が追加されます。


  7. ネットワークの設定
    ・「サブドメイン」にするか「サブディレクトリ」にするか ・・・ うちはいつも「サブドメイン」です。(好き好きですが)
    ・「ネットワークのタイトル」 ・・・ あとで変えられます。
    ・「管理者のメールアドレス」 ・・・ あとで変えられます。
    これだけ設定して「インストール」を押すと、次のステップが表示されます。

    • wp-content ディレクトリに blogs.dir ディレクトリを作成。Apacheの書き込み権限を追加。
      # cd /home/www/wordpress3/wp-content
      # mkdir blogs.dir
      # chown www-data:www-data blogs.dir
      
    • wp-config.php に以下のコードを追加。
      define( 'MULTISITE', true );
      define( 'SUBDOMAIN_INSTALL', true );
      $base = '/';
      define( 'DOMAIN_CURRENT_SITE', 'hoge.jp' );
      define( 'PATH_CURRENT_SITE', '/' );
      define( 'SITE_ID_CURRENT_SITE', 1 );
      define( 'BLOG_ID_CURRENT_SITE', 1 );
      
    • /home/www/wordpress3/ ディレクトリに .htaccess を作成する。
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index.php$ - [L]
      
      # uploaded files
      RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
      
      RewriteCond %{REQUEST_FILENAME} -f [OR]
      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^ - [L]
      RewriteRule . index.php [L]
      

    これでネットワーク関係はOKです。


  8. WordPress MU Domain Mapping のインストール
    ネットワークを入れただけだと、http://hoge.jp や http://ore.hoge.jp 、http://dare.hoge.jp など、複数のブログを管理することができるようになりますが、マルチドメインになったわけではありません。
    そこで、WordPress-muの文字通りのドン、donnchaさん作のプラグインを導入します。プラグインは新規追加で「WordPress MU Domain Mapping」を検索すれば出てきますから、いつもの手順通りにどうぞ。
    インストールしただけだと有効化しないので、以下2点を忘れずに。
    1.プラグインディレクトリの wordpress-mu-domain-mapping/sunrise.php を wp-content ディレクトリにコピー
    2.define( ‘SUNRISE’, ‘on’ ); を wp-config.php に追加


  9. サイトの追加
    時間切れなので、あとは注意点のみ。
    ・サイトを追加するときは、「サイトのアドレス」として、サブドメインを指定するが、独自ドメインにMappingしたあとは、使わなくなってしまうので、あまり名前付けに神経質にならなくてもよい。
    ・WordPress MU Domain Mapping の Domains で実際に割り当てる独自ドメインを指定する。
    ・Apacheの設定はもちろん必要。


HyperDB

hyperdb

 
なぜかあまり日本語での情報が少ない『HyperDB』ですが、負荷分散だったり、フェイル・オーバーだったりは、大切なことだと思うのです。
WordPress3.0にアップグレードするときには、HyperDBもセットで入れます!という決意表明です。

WordPress:メディア追加のときのタグ編集

wordpress_logo

あとであとでと思っているといつまでたってもやらないので、思い立ったときにやってみたシリーズ。
「メディアを追加」ボタンで画像を投稿エディタへ挿入してから、毎回毎回手作業で次のようなことをしてました。(自分使用&仕様)

  • <div class=”img-shadow”></div>を追加
  • <a>タグを削除
  • <img src=”">の http://dev.satake7.net を削除。titleも削除。altは空に。classも削除

それをフィルタ一発でやったろーぜというわけです。参考にさせていただいたのは「WordPress のエディタに埋め込むメディア用タグを自動編集する」。
きっとこっちを見た方がわかりいいと思うので、自分でやったとこだけメモ。

function add_image_send_to_editor($html, $id, $alt='', $title='', $align='', $url='', $size='') {
 $wk_html    = "";
 if (preg_match("/^<a>]*?&gt;.*?$/i", $html)) {
   $wk_html .= '<div class="img-shadow">'.preg_replace("/^<a>]*?&gt;(.*?)$/i", "$1", $html).'</div>';
   $wk_html  = preg_replace('/(title=".*?"|class="align.*"|http:.*satake7.net)/i', "", $wk_html);
 }

<a>タグだったら、<div class=”img-shadow”></div>でくくって、いろんなものを削除ということです。

WordPressで title属性に改行を入れたいとき

 
Nivo Slider の画面キャプションは、imgタグの title属性にキャプション文字列をセットして表示するようになっているんですが、改行文字を入れようとしてはまったのでメモ。
 
普通、title属性に改行を入れたいときは、このどちらかだとおもいます。

&#013;&#010;
<br />

WordPressだと、前者は無視され、BRは改行はするんですが、文字列終わりにゴミが付きます。

&lt;img src=&quot;test.jpg&quot; title=&quot;TEST<br />test" /&gt;

TEST
test" /&gt;

こんな感じになるわけです。apply_filtersが余計なことをしてるんじゃないかなという気がフツフツと湧いてきていますが、ここに手を入れると大変そうなので、見なかったことにして、とりあえず何とかしてみます。

$p = get_the_content();
$p = apply_filters('the_content', $p);
$p = str_replace('|BR|', '<br />', $p);
echo $p;

the_content()の代わりに get_the_content()を使って、自分で決めた改行コード(|BR|)を変換してるだけです。
やっぱり、apply_filters をちゃんと直すべきですね。(でも、WordPress3.0になったら直ってるかもしれない)

WordPressの投稿画面を使わないで画像を投稿へ紐づけ

1つ2つ記事を投稿するときは、WordPressの新規投稿の画面でなんの問題もないと思うんですが、
例えば、3400件ほど記事を作成して、その1つずつに30枚ほど画像を貼り付ける(102,000枚)のをバイト代出すからと言われても、手でやりたいと思いますか?
 
こういうときに、ハイっと言ってすぐ画面に向かって入力し続ける人の方がいまどきは稼げるかもしれませんが(1件の投稿と画像紐づけに1分かかったとして、1時間で60件、全部処理するのに、約57時間、時給1,000円で 57,000円か。こんなこと書いてないで、すぐやってもいいかも)、2時間くらいでめげる人のためにツールを使ってなるべく楽チンに画像を紐づける方法をまとめてみたいと思います。
Read More

« 前ページへ次ページへ »