• 地味に便利:自動的にリンクにclass=”current”を付加するPHP書きました。

    静的サイトを作るときに、ヘッダーとかグローバルナビゲーションとかを共通化して、読み込むとコードも見やすいし、修正とかのメンテナンスも楽ですよね。

    そんなときに、便利な関数です。

    [php]
    <?php

    function is_current( $uri = "" ) {
    $uri = trim( $uri, "/" );
    $request_uri = $_SERVER[‘REQUEST_URI’];

    if( $uri && strpos($request_uri."/", "/".$uri."/", 0) !== FALSE ) {
    return true;
    }
    $request_uri = trim(str_replace( "/index.php", "", $request_uri ), ‘/’);
    if( !$uri && !$request_uri ) {
    return true;
    }
    return false;
    }

    function echo_current( $uri = "" ) {
    if(is_current( $uri )) {
    echo ‘current’;
    };
    }
    ?>
    [/php]

    こんな感じで使います。引数が空の場合は、トップページのときにcurrentを吐きます。

    [php]
    <li class="nav1 <?php echo_current();?>"><a href="/">ホーム</a></li>
    <li class="nav2 <?php echo_current("news");?>"><a href="/news">ニュース</a></li>
    [/php]

    静的サイトを作るときにrequire_once $_SERVER[‘DOCUMENT_ROOT’].”/inc/functions.inc”;
    とかしてやると色々捗ります。

  • カスタムフィールドのリピートができる、Custom Field Suite

    http://komodo.arrow.jp/wp/733/ Custom Field Suite-複数フィールドのリピート可能 | WordPress 編

    カスタムフィールドのカスタマイズをするプラグインは度々紹介しているんですけど、リピートの機能(同一フィールドの追加)がなかなか素敵だったので、紹介します。

    WordPress › Custom Field Suite « WordPress Plugins

    まぁ、Advanced Custom Field(ACF)をフォークしたプラグインなのでリピートも似ていますが・・・・

    Magic Field 2等では出来ない、リピート内にリピートを入れたり等の芸当が出来ます。ACFだと$25係ってしまううんですがそれも無料です。その分寄付して下さいってことでしょう。

    なのでアクティベートしなくて良いので色々いじり倒せたり出来ます。
    ただ、管理画面の綺麗さや、日本語化、アドオンの多さ等々ACFにしかできないことも多々あるのでそこは一長一短な感じですね。

    ACFの簡易版という認識で使うと良いかなと思います。ACFが多機能すぎてあれ?ってなっちゃう場面とかでもなかなか使い勝手が良いと思います。

  • WordBench長野で、しゃべらせて頂く事になりました。

    11月の24日にWordBench長野が塩尻インキュベーションプラザ(SIP)で開催される事になりました。

    そこで、カスタム投稿タイプ&カスタムタクソノミーの使い方、プラグインの紹介というテーマでしゃべらせて頂く事になりました。

    人前で話すとかはあんまり得意では無いんですが、せっかくお誘い頂いたので、楽しんでやりたいなと思います。

    参加登録はこちらからです。
    http://atnd.org/event/wbn20121124

    よろしくお願いします!

  • WordPressの管理画面のフォントをメイリオに戻すプラグイン書きました。

    WP Multibyte Patch 1.6.3 から、管理画面のフォントがMS Pゴシックになりました。案外に慣れてしまうと、MS Pゴシックが見づらく感じてしまうモノです。
    なので、修正するプラグインのようなモノを書きました。

    meiryo-admin-patchみたいな、ディレクトリを作って、wp-content/plugins/にアップロードして、プラグインを有効にすれば、メイリオになっていると思います。

    メイリオファンの皆様、よろしくお願いします。

  • inline-blockの隙間を、IEでもChromeでもOperaでもfirefoxでも消す。

    この間コーディングでfloatとheightでやるのも嫌だなぁと思い、inline-blockを活用したのですが、隙間を消すのに意外に苦労したので、メモ。
    letter-spacingで隙間を消すのが有名だと思いますが、それだとOperaでチェックした時に隙間が消えない!という問題に先日の案件で直面しました。

    [html]
    <div class="columns">
    <div class="column"></div>
    <div class="column"></div>
    <div class="column"></div>
    </div>
    [/html]

    [css]
    .columns {
    letter-spacing: -0.4em;
    word-spacing: -1em;

    }

    .column {
    display: inline-block;
    letter-spacing: normal;
    word-spacing: normal;
    /display: inline;
    /zoom: 1;
    }
    [/css]

    word-spacingを指定すると、Operaでも隙間が消えるみたいです。ただ、Webkit系のブラウザはword-spacingだと効かないみたいです。
    inline-blockって意外にブラウザ間で実装が違うみたいですね。ie8以上案件ならdisplay:table-cellを使う方が無難かも知れないですね。

  • Custom Post Type Permalinks 0.8.1をリリースしました。

    Custom Post Type Permalinksをアップデートしました。

    アップデート内容ですが、バグフィックスです。
    パーマリンク設定が、archive/%post_id%.htmlみたいなときに、wp_get_archiveのFixが機能しなくなる問題や、Categoryをカスタム投稿タイプに紐づけた場合のパーマリンクなど、細かいバグフィックスを行っています。

    今回は海外の方から「バグがあったらから修正したけどどう?」みたいな感じでコードを送って頂いたりで、そこそこ大きなアップデートになってます。

    そんな感じで、フィードバックありきで、アップデートを今後も進めていくことになると思いますので、なにかバグやら発見したら、メールか@Toro_Unitまで、ご連絡頂ければ幸いです。

    よろしくお願いします。

  • WordPressのマルチサイトでブログが追加されたときに、フロントページ・投稿ページを自動追加する

    「WordPressのマルチサイトを使ったWEBサービスを作る」なんてコトを最近ちょこちょこやっているのですが、そのときに専用のページをこさえたりしたいなんて、ことがありまして。

    フロントページ機能を自動的に有効化したかったのですが、調べてみたらそんなに難しくなさそうだったので作ってみました。
    別に関数一つなんだからクラスにする必要ないんじゃないかとは思いますが、そこはご愛敬です。

    wpmu_new_blogというアクションフックがブログの新規作成時に実行されるらしいです。しかも結構色々と変数を渡してくれるみたいです。
    WordPressのネットワークで新規サイト作成時のAction Hook探し | ちいさな創々

    なので、それにフックして、wp_insert_postで、ページを作成して、それをupdate_optionで設定する、という意外に単純な作りで実現できます。

    BUddyPressなんかで活用活用したい!

  • Word Camp Tokyo 2012 に参加してきました。

    9月15日に行われた、Word Camp Tokyo 2012に参加してきました。

    セッションの感想とか書き出すとキリがないのであれですが、とりあえず、色々楽しかったです!色々勉強になりました。

    とりあえず、個人的には、懇親会や、本編中に色々な人と立ち話などさせていただいたのが楽しかったです。

    地方でフリーランス勢なので、なかなか同業者の方々や、プラグイン作者の方々などとお会いする機会がなかなか持てずにいたので、非常に勇気をもらったり、勉強になったり、そんな1日でした。

    Custom Post Type Permalinksしってるよー、つかってるよー、あーしたらもっといいよー、などなど、色々お話ができたりで、人見知りの自分としては、プラグイン作ったおかげで、話のネタには困らなかったです。

    というわけで、プラグインつくると、色々とコミュニケーションのきっかけになったりで楽しいし、スキルアップの機会も得やすいので、大変だけどそれに見合うだけの何かはあるんじゃないかなー、何て思いました。

    まぁ基本的にはfunctions.phpで使ったコードを使いまわしたいがために作ってるだけなんですけどね。

    次回参加する際にはLTとかもやりたいなーなんて、思います。
    精進します。

  • ページ内リンクでもpopStateがfireする件。

    最近、popStateとかpushStateとかいい加減に活用しようと思いまして。

    というのも、6月頃にgoogleのアルゴリズム変更があったようで、js有効時はhashChangeにするようなサイトがSEO的に不具合が出てしまったんですよね。トップページは問題無いのですが、下層ページがトラッキングされないとか、色々SEO的に不具合が出たり等、色々トラブルがありまして・・・・ 参考jQuery hashchange event を使ってみた。
    1年前は全然普通に使えたのにねぇ・・・・

    まぁ、そんなこんなで、popState,pushStateを使うことになりました。
    使い方はこの記事が詳しいです。AjaxでもURLを更新して履歴を作れるHTML5のpushState試してみた | webOpixel

    で、ページ内リンクも使ったりで色々ごちゃごちゃやっていたのですが、ページ内リンクでもpopStateのイベントが発火してしまうようです。

    B1⇔B2の戻る/進むでページリロードが発生しない(=popstateイベントが送出される)ってところがポイントです。

    1点腑に落ちないのがページ内リンク(ハッシュが付与されるページリロードが発生しないページ履歴更新)でもpopstateイベントが発生するよう。

    [HTML5]History APIめも – l4l

    『同一ページ中でアドレスバーに変更があった場合にイベントが発火する』みたいな解釈って事ですね。なるほど。

    ページ内リンク主体で色々やりまくるようなサイト(http://www.cooper.com/みたいな。popstateとかは使って無いようだけど)を構築する際は色々注意しないといけない見たいですね。

  • Custom Post Type Permalinks 0.7.9.1をリリースしました。

    Custom Post Type Permalinks をアップデートしました。

    久しぶりのアップデートになりますね。

    • タクソノミーアーカイブでpage/2等が404になる
    • 子ページのリンクのバグ

    等のバグを修正しました。
    また、コメントへのパーマリンクに対応しました。対応出来てなかったです。m(_ _)m

    管理画面周りにも若干手を入れてます。

    バグ報告などありましたら、@Toro_Unitまで、お願いします。

  • たぶん便利:WordPressで全ての投稿のアーカイブのページをこさえるプラグインを作ってみた。

    WordPressのパーマリンク設定のところに、

    数字ベース /archives/123

    ってのがありますよね。これ、/archives/で全記事のアーカイブが表示が表示されたら便利かなって思いませんか?

    /news/123

    とかにしたときに、/news/記事一覧がarchive.phpとか、arhive-post.phpで表示されたら素敵だと思いますよね?

    そんな機能が欲しかったのでプラグインをこさえてみました。もともとは仕事で必要になったものだったのですが

    https://github.com/Toro-Unit/post-archive

    いや、ページテンプレートカスタマイズすれば出来るじゃん!って言われそうですが、archive.phpが読み込まれるので、地味に便利だと思います。

    動作としては、WordPressのパーマリンク設定のところで、%post_id%とか%postname%だとかの置換タグの前にディレクトリ構造(archives/みたいな)があると、それで、全記事のアーカイブページにアクセスできるようになります。
    あと、設定->投稿設定のところにPost labelという項目が追加されます。ここで、サイドメニュー“投稿”を変更出来ます。また、全記事のアーカイブページのタイトルもこれになります。未設定の場合は投稿になります。

    近いうちに公式ディレクトリに上げます。多言語化ファイルも作ります。

    バグ報告とか要望とか応援とかは @Toro_Unit まで頂ければ嬉しいです。