記事埋め込みプラグインとテーマとの連携

あとは記事に別記事を埋め込む時のスタイリングをどうするかというところ。
これは本来プラグイン側ではなくテーマ側でコントロールすべき部分だけど、スタイル当てるにもHTML側の構造は影響が大きい。きっちり分離はできないかも。

記事内に別記事(投稿フォーマット)を埋め込むプラグインでの、その一部分の整形をどうするかな、と悩んだけど、わりとちゃんとできた。

やり方は簡単で、プラグインからget_template_part()を呼ぶだけ。プラグインは指定された呼び出しを実行するのみ。あとはテーマ側に任せる。
テーマに存在するデフォルトのcontent-aside.phpを呼び出すこともできるし、content_insert-aside.phpといった独自テンプレを呼び出すこともできる。

デフォルトの呼び出しだと都合が悪いことが多い(たとえば埋め込みパーツ毎に著者情報が逐一挿入されたり)ので、たいていは独自テンプレをテーマに追加してもらう形になる。

WordPress 投稿フォーマット用にプラグイン作る

年明けにまた投稿フォーマットの活用を考えて(蒸し返して)みて、いくつか機能を拡張してみた。
おもて側の一覧表示とナビゲーション(前後リンク)は前回の処置で落ち着いたので、こんどは管理側。

  • 投稿一覧画面で投稿フォーマットを指定した絞り込み機能を追加
  • 投稿一覧画面でID、スラッグの列を追加。※記事に他の記事(投稿フォーマット)を埋め込むときにあると便利なので。
  • 投稿編集画面で投稿フォーマット指定をセレクト化。※ふつうに投稿フォーマットの表示をさせると縦に長いラジオボタンの羅列になるのが邪魔くさかったので、コンパクトにした。

上記のコードを1つのプラグインにまとめておいた。これで管理側もちょっといい感じになった。

“WordPress 投稿フォーマット用にプラグイン作る”の続きを読む

WordPressで投稿フォーマット用カスタマイズ

しばらくこのサイトのWordPressをいじっていた。
というか、またまた投稿フォーマット関連を。
これをうまく使って、細切れの調査ノートと、普通の記事を両方扱うシステムにしたかったので。

具体的には次の部分を調整した。

  • 通常の一覧ページには投稿フォーマットの記事は表示しない。
  • 記事の前後リンクを調整する(通常記事は投稿フォーマットを除外。投稿フォーマットは投稿フォーマットのタームで絞り込み)。
  • アーカイブページの2ページ目以降はメタタグでrobots noindexを挿入する(これは最終的に投稿フォーマット、通常投稿を問わず指定することにした)。

こうすることで「通常の記事」と「投稿フォーマットでの細々したノート」を切り離すことにした。

“WordPressで投稿フォーマット用カスタマイズ”の続きを読む

WordPressでカテゴリーベースを消す

WPでカテゴリーのURLが「ドメイン名/category/カテゴリー名」になるのを、「ドメイン名/カテゴリー名」にする件。

No Category Baseプラグインで消せることは知っていたが、管理画面の「パーマリンク設定」でカテゴリーの欄にドット「.」を入れる(+パーマリンクURLに.htmlを入れてバグ回避)という手法を知って試してみた。が、うまくいかず。飛んだ先で404になってしまう。
最新のWPでは使えない技なのか、こちらの環境依存の問題かは調べてない。

結局、プラグイン入れた。最近メンテされてる Remove Category URLプラグインにしてみた。

タスク管理ツールを試す

タスクシュートの完全な代替にはならないが、それなりに使えるなあと思ったものをいくつか。

ひとつはTrello
これは無料の汎用的なタスク管理/プロジェクト管理ツールで、一見シンプルだが使うと細かいところもよく出来てる。必要十分で洗練されている。デザインも使い勝手も素晴らしく、色々な使い方ができる。

ただ時間計測系の機能がついてないので、そこを外部拡張で補わないといけない。
そこで、Trelloと組み合わせるやつでいいと思ったのが、
Plus for Trello
Harvest for Trello
Board Trail
の3つ。
前の2つはChromeブラウザのエクステンションを入れて使う。特にPlus for Trelloは作業時間の見積・実績が残せていい。
最後のはエクステンション不要で、外部から5分間隔でTrelloのボード状態を監視してくれるタイプ。

前2つのChrome拡張のやつは細かく計測できるが、PCでしか使えない。
最後のは計測粒度はやや粗いが、モバイル環境でも使える。
それぞれ一長一短。

もうひとつの有力候補はKanbanFlow
これは無料版と有料版(1ユーザーあたり月5ドル)がある。
Trelloほど見た目は洗練されてないものの、これの良いところは時間計測機能としてポモドーロタイマーがついていて、ツールの標準機能で作業時間の見積・実績が残せるところ。モバイル版もある。

今のところ、Trello + Plus for Trelloか、KanbanFlowかで迷っている。
やはりKanbanFlowの標準で時間計測付きというポイントが惹かれるかな…
ただラベル付けとか細々のショートカットとかはTrelloのほうが優れているんだよなあ。

追記:
KanbanFlowのモバイルウェブ版、時間計測機能が省略されている模様。
うーん、これは残念。
一方、TrelloはiOSアプリもAndroidアプリもあって、使い勝手はまずまず。これなら外でも使えそう。
こうなるとTrello + Board Trail。見積・実績時間の記録にPlus for Trelloを援用、というところか。

少し不満があるのが、1日毎の結果のスナップショットが残らず流れていってしまうこと。
1日毎の振り返りや分析をしたければ、自分で別のところに記録するしかない。

githubでSSLエラー

Google Chromeでgithubを開こうとしたら、見たことのないSSLエラーが。

http://orangain.hatenablog.com/entry/2014/03/01/mavericks-ssl-certificate
解決策は上記のブログにあるとおり、キーチェーンアクセスに保存されている「DigiCert High Assurance EV Root CA」を削除。
助かりました。

SEOの勉強

最近SEOについての色々な記事を読んでた。バズ部とかで。
面白い。小手先のテクもあるけど、結局最後はコンテンツの質やサイト設計といった本質に遡ることになる。とくに感銘を受けた記事は次のリンク。

5ヶ月で100万PVのブログを作成する為に実践した32 の手順

もちろんこの記事のように土台からSEOを意識してきっちり作っていくのもありだけど、ディレクトリ構造とか後から変えるのが労力いるような場合を除けば、SEOなんてのは良質なコンテンツを蓄積した後からやるくらいでもいいのかもしれない。
細かいテクの積み重ねは、それを活かせるコンテンツがあってこそか。

ウェブマスターツールとか色々

作り始めのサイトがろくに検索エンジンにインデックスされてなかったのでなんでかと思ってたら、ウェブマスターツールでちゃんとサイトマップ登録してなかった。
ついうっかりしてた。

なんか色々と忘れてることが多い?と思ったけど、そもそも仕事がサイト構築の一部分を請け負ってるだけのことが多いので、運用部分で気を配ることを今まであまり意識してなかった。ちゃんと整理してリスト化しておかないといけないな…
ほかにもできてないことがまだたくさんある。

ウェブ制作工程についての雑感

HP作成サービスのまとめ記事を読んだ。
制作会社を頼らず無料のホームページ作成ツール14個

これ読むと、ビルダー系もどんどん進化してるなあ。知らないサービスもいくつかあった。
いわゆるふつーのウェブサイト制作の仕事は実装側から企画側とかコンテンツ作りのほうにシフトしないと将来がやばいとますます感じるところ。
あと請負側から事業主体へのシフト。

投稿埋込用ショートコード

// 投稿埋込用ショートコード
// タイトルのoff、または書き換え可能
// post slug=XXX
// post slug=XXX title=off
// post slug=XXX title=タイトルをこの文字列で書き換え
function add_other_post($params = array()) {
    extract(shortcode_atts(array(
        'slug' => '',
        'title' => ''
    ), $params));
    $html = '';
    if ($slug == '') return $html;

    $queries = new WP_Query("name=$slug");
    while ($queries->have_posts()) {
        $queries->the_post();

        if ($title == 'off') $title = '';
        elseif ($title == '') $title = the_title('','',false);

        if ($title !== '') $html .= '<h2>' . $title . "</h2>n";
        $content = get_the_content();
        $content = apply_filters('the_content', $content);
        $html .= $content;
    }
    wp_reset_postdata();
    return $html;
}
add_shortcode('post', 'add_other_post');