ご相談・お問い合わせはこちらから

WordPressプラグイン「Jetpack」のCDN「Photon」をWordPressテーマ・プラグインに実装するスニペット

WordPress プラグイン「Jetpack」にCDN (Contents Delivery Network) で画像を配信する「Photon」があります。「Photon」を使うと、画像配信の分散ができ、サーバの負荷分散やサイトの表示パフォーマンスの向上に繋がります。

「Photon」 は、WordPress.com で使われていたり、自分でホストしている WordPress サイトにプラグイン「Jetpack」をインストールすることで導入できます。

「Photon」の導入は、プラグイン「Jetpack」の「Photon」を有効化するだけで CDN で画像配信されます。

画像配信されるのは、サムネイル画像やアイキャッチ画像だけで、「Photon」で配信されない画像もあります。たとえば、ご自身でテーマやプラグインをカスタマイズしたり、開発した場合。img タグで埋め込んだりすると、画像が「Photon」に対応した形にならないのでうまく配信されません。こういう場合も Photon API が用意されているので、対応ができます。

以下のスニペットで 「Photon」を有効化していると、画像URLを元に Photon用URL を生成して画像配信してくれます。

$image_url = class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'get_active_modules' ) && in_array( 'photon', Jetpack::get_active_modules() ) ? 'http://i' . mt_rand(0, 2) . '.wp.com/' . str_replace( array( 'http://', 'https://' ), '', esc_attr( $image_url ) ) : esc_attr( $image_url );

「Photon」を利用する場合、WordPress.com を使っているか、WordPress サイトにプラグイン「Jetpack」をインストールしている場合に限りますと、利用規約にあるのでご注意を。

WordPressプラグイン「Multi Device Switcher」をアップデートしました。

今回の WordPressプラグイン「Multi Device Switcher」アップデートは、is_disable_switcher(), is_pc_switcher() の2つの関数を追加しました。

これまでのアップデートでデバイスの判定に is_multi_device関数を使ってコンテンツを出し分けたり、JavaScript でのデバイス判定を使った WordPressテーマのカスタマイズが可能です。

今回も is_disable_switcher(), is_pc_switcher() の2つの関数の追加でさらに詳細な状態のデバイス判定ができるようになりました。テーマを編集してコンテンツを出し分けたり、function.php で WordPressのオプション設定を切り替えたりできます。

is_multi_device(), is_disable_switcher(), is_pc_switcher() の3つ関数でテーマのカスタマイズができる環境を整えてみました。

サンプルコード

たとえばスマートフォンでアーカイブの投稿表示件数を 10 件にする場合、スマートフォンで表示するテーマの function.php にこんな感じで書いて。ってことができます。

if ( function_exists( 'is_multi_device' ) && function_exists( 'is_pc_switcher' ) ) :

function custom_posts_per_page_count( $query ) {
    if ( is_multi_device('smart') && ! is_pc_switcher() ) {
        if ( $query->is_main_query() ) {
            set_query_var( 'posts_per_page', 10 );
        }
    }
}
add_action( 'pre_get_posts', 'custom_posts_per_page_count' );

endif;

以上、テーマのカスタマイズで是非活用してみてください。


is_pc_switcher() function

is_pc_switcher() function is a boolean function, meaning it returns either TRUE or FALSE. Return the the state of PC Switcher by the Multi_Device_Switcher class. Return true if the theme has switched by the PC Switcher.

Usage

<?php is_pc_switcher(); ?>

Example

<?php
if ( function_exists( 'is_pc_switcher' ) ) {
    if ( is_pc_switcher() ) {
        /* Theme switched by the PC Switcher. Display and echo specific stuff here */
    } else {
        /* Display and echo specific stuff here */
    }
}
?>

Parameters

None

Return Values

(boolean) Return the state of PC Switcher.

is_disable_switcher() function

is_disable_switcher() function is a boolean function, meaning it returns either TRUE or FALSE. Return the state of disabled by the Multi_Device_Switcher class.

Usage

<?php is_disable_switcher(); ?>

Example

<?php
if ( function_exists( 'is_disable_switcher' ) ) {
    if ( is_disable_switcher() ) {
        /* Disabled. Display and echo specific stuff here */
    } else {
        /* Display and echo specific stuff here */
    }
}
?>

Parameters

None

Return Values

(boolean) Return the state of disabled.


Download:

WordPress のプラグインページからどうぞ。

Installation:

WordPress プラグイン「Multi Device Switcher」のインストール詳細はこちらからどうぞ。

Code Repository:

thingsym / multi-device-switcher (GitHub)

Licenses:

Licensed under GPL version 2.0

Donationware:

よろしければ、開発とメンテナンスのために寄付していただければうれしいです。

Donationware

Perl6のプログラミング環境「Rapid Perl6」を作りました

バージョン1.0 を今年 2015年 のクリスマスにリリースすると発表があった Perl 6.0。かれこれ 10 年以上開発していてなかなかリリースされなかったがようやく形になりそう。

一足早くその Perl 6 のプログラミング環境をサクッと立ち上げられる Vagrant 環境をつくりました。

Perl 6 は言語仕様も変わり、Perl 5 など前バージョンの後方互換性もないので、新しい言語と見ていろいろいじってみたい方はどうぞ。

以下、GitHub にある Rapid Perl6 の readme-ja.md です。


Rapid Perl6

Rapid Perl6 is Vagrant environment for the Perl 6 programming language.

Provisioning

# install Vagrant plugin
vagrant plugin install vagrant-hostsupdater

cd rapid-perl6
vagrant up

...

vagrant ssh

Version

cd /home/vagrant/perl6/bin
./perl6 -v
This is perl6 version 2015.01-194-g5bb1942 built on MoarVM version 2015.01-72-g9106bee

OR

cd /home/vagrant/perl6/bin
./perl6 -V
...

Help

cd /home/vagrant/perl6/bin
./perl6 -h

hello world!

cd /home/vagrant/perl6/bin
./perl6
> say 'hello world!';
hello world!
> exit;

hello world! (helloworld.pl)

#!/usr/bin/env perl6
say q/hello world!/;
1;

Run helloworld.pl

cd /home/vagrant/perl6/bin
./perl6 /vagrant/helloworld.pl
hello world!

Reference

カスタム投稿タイプのリンクを追加するWordPressプラグイン「Custom Post Type Rewrite」をリリースしました

カスタム投稿タイプのパーマリンクを追加するWordPressプラグイン「Custom Post Type Rewrite」をリリースしました。

カスタム投稿タイプを使ってテーマを開発するとき、ブログとして機能しなかったりします。カスタム投稿タイプでは日付ベースと投稿者ベースのパーマリンクが対応していないのが原因。

プラグイン「Custom Post Type Rewrite」は、カスタム投稿タイプを使ったとき、WordPressがデフォルトで用意されていない一部のパーマリンクを追加してくれるユーティリティプラグインです。

WordPress管理画面のパーマリンク設定に対応して以下のパーマリンクを追加します。

  • 日付ベース
  • 投稿者ベース
  • フロント

カスタム投稿タイプを使ったテーマ開発に是非使ってみてください。

ダウンロード & インストール

WordPress の公式プラグインページ

ライセンス

GNU General Public License v2.0 (GPLv2) licenses

開発

GitHub

Donationware

よろしければ、開発とメンテナンスのために寄付していただければうれしいです。

If you like this plugin, please donate to support development and maintenance.

thingsymのほしい物リスト

カスタム投稿タイプのデフォルトウィジェット一式が詰まったWordPressプラグイン「Custom Post Type Widgets」をリリースしました

カスタム投稿タイプで活用できるデフォルトウィジェット 6 点が詰まった WordPressプラグイン「Custom Post Type Widgets」を作りました。

作ったのはおよそ 3 年前になりますが。最近ソースコードを整理して、というかほぼ標準ウィジェットのソースをベースに機能拡張とリファクタリングしたのをリリースしました。

デフォルトウィジェット 6 点

機能は、Custom Post Type や Taxonomy で絞り込みができる以外は、WordPressの標準ウィジェットとほぼ同じです。

ユーティリティプラグイン「Custom Post Type Rewrite」で日付ベースのパーマリンクを追加

デフォルトでは、カスタム投稿タイプでカレンダーやアーカイブなど日付ベースのリンクが機能しません。WordPressは、カスタム投稿タイプを使ったパーマリンク設定が一部用意されていないようです。なのでカスタム投稿タイプでブログと同じように機能しません。そのためには、カスタム投稿タイプのパーマリンク設定が編集できたり、パーマリンクを追加してくれるプラグインを導入する必要があります。

今回パーマリンクを追加してくれるユーティリティプラグイン「Custom Post Type Rewrite」も作ったのであわせて使ってみてください。ほかにパーマリンク構造が編集できるプラグイン「Custom Post Type Permalinks」などいろいろあるので検討してみてください。

以上でカスタム投稿タイプでブログとほぼ同じように機能します。個人的にコレを実現したかった。是非活用してみてください。

標準ウィジェットと置き換える方法

WordPressプラグイン「Custom Post Type Widgets」を有効化すると、WordPress管理画面のウィジェットにある「利用できるウィジェット」に標準のウィジェットといっしょに追加されます。

標準ウィジェットと機能的に同じで重複して並ぶのはあれだなぁと。標準ウィジェットと置き換えたい場合の Tips です。以下のソースを functions.php にコピペするだけ。

function remove_default_widget() {
    unregister_widget( 'WP_Widget_Recent_Posts' );
    unregister_widget( 'WP_Widget_Archives' );
    unregister_widget( 'WP_Widget_Categories' );
    unregister_widget( 'WP_Widget_Calendar' );
    unregister_widget( 'WP_Widget_Recent_Comments' );
    unregister_widget( 'WP_Widget_Tag_Cloud' );
}
add_action( 'widgets_init', 'remove_default_widget' );

管理画面をスッキリとさせたい場合はどうぞ。

参考: Function Reference/unregister widget

ダウンロード & インストール

WordPress の公式プラグインページ

ライセンス

GNU General Public License v2.0 (GPLv2) licenses

開発

GitHub

Donationware

よろしければ、開発とメンテナンスのために寄付していただければうれしいです。

If you like this plugin, please donate to support development and maintenance.

thingsymのほしい物リスト

新しいサービスのアイデアに役立つデベロッパーブログです。IT/Web技術メモや問題解決策、開発に役立つTips、作ったソフトウェアやツールの紹介。

プロフィール

Thingsym (シングスワイエムと発音します)

ウェブサービスをつくってアイデアをカタチにしているWebエンジニア・デベロッパー。経営者のための顧問サービスやWordPressテーマ販売サービスで経営課題の解決と事業の成長をマーケティングやマネジメント面でサポート。事業開発に取り組んで新しい価値を生み出すビジネスモデルの構築をしています。

最近のテーマは創造性 (creativity)、マーケティング (marketing)、マネジメント (management)

グローバルブログ (英語)

Twitter, GitHub, WordPress

最近のコメント

  • こんにちは 最新バージョンのMulti (なお)
  • 簡潔に書かれていてしかも高機能なスクリプ (nlogn)
  • 環境が悪いのか、スマートフォン(モバイル (まる)
  • Twitterが動かなくなってしまいまし (髙橋柊真)
  • @Anywhereは、Twitterの仕 (tihngsym)
  • x処理をさくっと実装するためにjQuer (burberry sale uk)
  • はじめまして。 あつかましいお願いですが (山之内豊)
  • 試用させて頂いてます。 1つお教えくださ (masai)
  • 上記ブログサイトでMulti Devic (ITポケット)
  • 便利なプラグインを提供していただきありが (よし)
ページの先頭へ