リンクをカードにするプラグインを作ろう!(2)クラスの記述をする

プラグインのヘッダとクラス、ショートコードのフックまで記述していきます。

前回まで

何をするプラグインを作るかを決めました。

[link url=”https://popozure.info/20180808/13200″]

コードを書いていく

プラグインのディレクトリを作成する

/wp-content/plugins ディレクトリにディレクトリを作成します。

これはプラグインの名前にもなります。

「ぽぽづれ。」の「ブログカード」なので、今回は「popo-blogcard」とします。

プラグインのファイルを作成する

今度はそのディレクトリの中にプラグインのファイルを作成します。

任意の名前で良いので「plugins.php」とかでもいいですし、ディレクトリの名前と同じでもいいです。

今回はディレクトリ名と同じにしてみます。

0バイトのファイルは「シフトJIS」なのか「UTF-8」なのか区別が付かないのでWindowsのエディタ等では「シフトJIS」形式で読まれてしまうと思います。

文字コードを「UTF-8」に変更しておきます。

EmEditorの場合には「ファイル(F)」→「読み直し(R)」→「UTF-8(8)」です。

ヘッダを記述する

プラグインのヘッダを記述していきます。

今回はこんな感じにしてみました。

[php title=”popo-blogcard.php” mark=”1-10″]クラスの記述をする

クラス名は「popo_blogcard」にします。

[php title=”popo-blogcard.php” start-line=”11″ mark=”1-3″]class popo_blogcard {
}
$popo_blogcard = new popo_blogcard;[/php]

__constructの記述をする

インスタンスが生成されたときに実行される「__construct」を追加します。

[php title=”popo-blogcard.php” start-line=”11″ mark=”2-3″]class popo_blogcard {
function __construct() {
}
}
$popo_blogcard = new popo_blogcard;[/php]

フックやフィルターの記述をする

今回は「blogcard」というショートコードを使おうと思うのでショートコードのフックを追加します。

[php title=”popo-blogcard.php” start-line=”11″ mark=”3″]class popo_blogcard {
function __construct() {
add_shortcode(‘blogcard’, array($this, ‘shortcode’ ) );
}
}
$popo_blogcard = new popo_blogcard;[/php]

実行する関数を記述する

呼び出される「shortcode」関数を記述します。

[php title=”popo-blogcard.php” start-line=”11″ mark=”5-6″]class popo_blogcard {
function __construct() {
add_shortcode(‘blogcard’, array($this, ‘shortcode’ ) );
}
function shortcode($opt , $content = null ) {
}
}
$popo_blogcard = new popo_blogcard;[/php]
今回のコード記述はここまでです。

有効化しておく

プラグイン画面からプラグイン「popo-blogcard」を有効化しておきましょう。

今回のコード

今回は骨組みだけなので何も動作しない状態です。

[php title=”popo-blogcard.php”]次回は・・・

いよいよURLパラメータで指定されたリンク先をアクセスしてサイトの内容を取得します。

[link url=”https://popozure.info/20180811/13236″]

では、この辺で。(^-^)o

[amzn-link asin=”4774187062″][amzn-link asin=”B00M939Y0I”][amzn-link asin=”4798143774″][amzn-link asin=”B0714HYR2P”][amzn-link asin=”B01B2Y67JA”]

[Pz-LkC][2.1.6]リンクをカード形式で表示するプラグイン更新。アンダーラインの除去など。

リンクをカード形式で表示するWordPressプラグイン「Pz-LinkCard」。

最新版ver2.1.6を公式プラグインディレクトリで公開する予定しました。

ver2.1.5→ver2.1.6修正点

2018年8月5日に公開したver2.1.5からのバージョンアップです。

[link url=”https://popozure.info/20180805/13107″]

設定画面にTwitterアカウントを表示しました

設定画面の一番最後にツイッターアカウント(@popozure)へのリンクを追加しました。

タイトル取得を修正しました

titleタグが上手く取得できないパターンがありましたので、正規表現(検索条件)を修正しました。

Aタグの文字装飾を無しにしました

今回の一番見た目の大きい修正です。

一部テーマとの相性でリンクカード内の文字にアンダーラインが表示されてしまうのを修正しました。

ver2.1.6→ver2.1.6.1修正点

(2018/08/10追記)

Notice(警告エラー)が出ていたのを修正しました。

ver2.1.6.1→ver2.1.6.2修正点

(2018/08/11追記)

設定変更するとアンカー文字にアンダーラインが表示されてしまうのを修正しました。

その他

お気づきの点などありましたら、コメント欄や、ツイッターアカウント「ぽぽろん@ぽぽづれ。(@popo68k)」もしくは「ぽぽづれ。(@popozure)」までご報告ください。

では、この辺で。(^-^)o

リンクをカードにするプラグインを作ろう!(1)機能を考える

リンクをカード形式で表示するWordPressプラグインを作ってみましょう。

この記事の対象者

PHPが何となく分かっていて、WordPressプラグインの作成に興味がある方。

リンクをカード形式で表示する「Pz-LinkCard」があるのは分かっているけど自分でも作ってみたい方。

[link url=”https://popozure.info/pz-linkcard”]

まず最初に

まず最初にプラグインの用途や機能を決めます。

今回は「リンクをカード形式で表示するプラグイン」を作ってみようと思います。

Pz-LinkCardから必要最低限の機能だけ残した軽いライト版です。

機能を考える

リンク先URLの指定方法

リンク先のURLを指定する方法として、

  • URLを記述したら勝手にカードになる
  • ショートコードを記述したらカードになる

といった方法があります。

今回はショートコードを使う方式を取ろうと思っていますが要望がありそうならURL置き換え方式も考えようかと思います。

(※Pz-LinkCardもURL置き換え方式に対応しています。)

ショートコードだったら「blogcard」にして、Pz-LinkCardとの相互乗り換えが出来るようにするとしましょう。

ショートコード例

具体的な動作

リンク先のURLが取れたら、

  • URLからリンク先をアクセスして、記事内容(タイトルや抜粋文)を取ってくる。
  • それをスタイルシートを設定してカード形式で表示する。

やりたいことはこんな感じです。

もうちょっと考えてみると・・・?

でもこれだと「ブログカードを表示するたびにリンク先にアクセス」してしまいます。

表示が遅くなるばかりかリンク先のサイトにも負担をかけてしまいます。

そこで、

  • 一度取得した記事内容はデータベースにキャッシュ(保管)する
  • キャッシュされている記事内容はデータベースから読みだして表示する

こんな感じの機能を付けようと思います。

プラグインの名称を考える

そして次に考えるのがプラグインのディレクトリ(フォルダー)名です。

ディレクトリ名はそのままプラグイン名になります。

半角の英字とハイフンが使えます。

「ぽぽづれ。」の「ブログカード」ということで「popo-blogcard」とでも付けましょうか。

Pz-LinkCardでは「リンクカード」と呼んでいますが、今回は広く呼ばれている「ブログカード」という名称を使おうと思いました。(本当は「リンクカード」という名称も広めたい。)

次回予告

今回はここまで。

次回はさっそくコードを書いていきます。

[link url=”https://popozure.info/20180810/13219″]

では、この辺で。(^-^)o

[amzn-link asin=”4774187062″][amzn-link asin=”B00M939Y0I”][amzn-link asin=”4798143774″][amzn-link asin=”4865940057″][amzn-link asin=”B07C3QDW4F”]

[VBA]指定した秒数だけ待つ

自分用のメモ。VBAで「待つ」。

1秒待つ

[vb] Application.Wait [Now() + "00:00:01"][/vb]

500ミリ秒待つ

[vb] Application.Wait [Now() + "00:00:00.5"][/vb]

参考にしたサイト

[link url=”http://dream-drive.net/archives/2011/09/excel_vba1wait.html”]

非同期処理とかするときに、500msだけ待つ、とかしたいですよね。

では、この辺で。(^-^)o

[amzn-link asin=”B01BM829D4″][amzn-link asin=”4774173673″][amzn-link asin=”4990512405″][amzn-link asin=”4798146587″][amzn-link asin=”4295000914″]

[WPプラグイン開発]WordPressプラグインの作り方(実践から覚えたい人向け)

WordPressプラグインを作ってみましょう。

この記事の対象者

PHPやほかの言語が分かっていて、WordPressプラグインの作成に興味がある方。

「習うより慣れろ」で実践してから覚えて行きたいタイプの方向けの記事となります。

まず最初に

まず最初にプラグインの用途や機能を決めます。プログラミングをするなら当然かもしれません。

ここでは、「今回のハイライト」のような枠線を表示するプラグインを作ってみようと思います。

完成予想図

ショートコードを記事中に記述するのが良さそうです。

となるとショートコードを考えるのですが、ここでは「ぽぽづれ。」から取って「popo」にしてみましょうか。

ショートコード例
[popo title=”今回の見どころ”]

  • こんにちは、「ぽぽづれ。」です!
  • WordPressプラグインを1から作ってみましょう。
  • こんな感じのものが作れます。[/popo]

そして次に考えるのがプラグインのディレクトリ(フォルダー)名です。

ディレクトリ名はそのままプラグイン名になります。

半角の英字とハイフンが使えます。

「ぽぽづれ。」の「ハイライト(見どころ)」ということで「popo-highlights」とでも付けましょうか。

コードを書いていく

まずはディレクトリを作成する

/wp-content/plugins ディレクトリにディレクトリを作成します。

今回の場合は「popo-highlights」です。

プラグインのファイルを作成する

今度はそのディレクトリの中にプラグインのファイルを作成します。

任意の名前で良いので「plugins.php」とかでもいいですし、ディレクトリの名前と同じでもいいです。

今回はディレクトリ名と同じにしてみます。

0バイトのファイルは「シフトJIS」なのか「UTF-8」なのか区別が付かないのでWindowsのエディタ等では「シフトJIS」形式で読まれてしまうと思います。

文字コードを「UTF-8」に変更しておきます。

EmEditorの場合には「ファイル(F)」→「読み直し(R)」→「UTF-8(8)」です。

ヘッダを記述する

プラグインのファイルには決まった書式でヘッダを記述します。

[php title=”popo_highlights.php”]<?php
/*
Plugin Name: (プラグインの名前)
Plugin URI: (プラグインの説明と更新を示すページの URI)
Description: (プラグインの短い説明)
Version: (プラグインのバージョン番号。例: 1.0)
Author: (プラグイン作者の名前)
Author URI: (プラグイン作者の URI)
License: (ライセンス名の「スラッグ」 例: GPL2)
*/[/php]

ライセンスはWordPress本体に準拠することになるので「GPL2」がお決まりと思ってください。

今回の場合、こんな感じにしました。

[php title=”popo_highlights.php”]<?php
/*
Plugin Name: popo-Highlights
Plugin URI: https://popozure.info/20180808/13142
Description: Highlights
Version: 0.0.1
Author: popozure-test
Author URI: https://popozure.info
License: GPL2
*/[/php]

さっそくクラスを記述する

いよいよプログラムの本体にかかります。

クラスというのを作って、名前はプラグインと同じ名前にしておきます。

プラグインのプログラムは有効化しているとページが読まれる最初に一回だけ実行されるので、「$(適当な名前) = new (クラス名);」としてインスタンスを生成しています。

[php title=”popo_highlights.php” start-line=”11″ mark=”1-3″]class popo_highlights {
}
$popo_highlights = new popo_highlights;[/php]

__construct()を記述する

クラスが生成されると必ず実行される「__construct()」を記述します。(アンダースコア2つとconstruct)

ここがプラグインの中核となります。

[php title=”popo_highlights.php” start-line=”11″ mark=”2-3″]class popo_highlights {
function __construct() {
}
}
$popo_highlights = new popo_highlights;[/php]

ページが表示される→プラグインのプログラムが実行される→インスタンスが生成される→__construct()が実行されるという流れです。

フックやフィルターを設定する

__constructの中に、「こういうことが起きたらこうする」というようなことを記述していきます。

今回は「popo」というショートコードが書かれたら枠線を書きたいので、ショートコードのフックを書いていきます。

[php title=”popo_highlights.php” start-line=”11″ mark=”3″]class popo_highlights {
function __construct() {
add_shortcode(‘popo’, array($this, ‘shortcode’));
}
}
$popo_highlights = new popo_highlights;[/php]

「popo」というショートコードで「$this(自身のクラス)」にある「shortcode」という関数を呼び出す、という記述になります。

実行する関数を記述する

呼び出される「shortcode」関数を記述します。

[php title=”popo_highlights.php” start-line=”11″ mark=”5-6″]class popo_highlights {
function __construct() {
add_shortcode(‘popo’, array($this, ‘shortcode’));
}
function shortcode($opt , $content = null) {
}
}
$popo_highlights = new popo_highlights;[/php]

第一引数にはパラメータ記述、第二引数にはショートコードで囲まれた文字が入ります。

[popo title=”今回のハイライト”]こんにちは![/popo]

と記述された場合には、$optには

Array
(
[title] => 今回の見どころ
)

が、$contentには「こんにちは!」が入っています。

HTML記述を返却する

returnでHTML記述を返却します。

「return $content;」と記述すればショートコードに囲まれた文字がそのまま返却されます。

[php title=”popo_highlights.php” start-line=”15″ mark=”2″] function shortcode($opt , $content = null) {
return $html;
}[/php]

枠などを加工して返却する

実際に返却するHTMLを考えてみました。

[php title=”popo_highlights.php” start-line=”15″ mark=”2-6″] function shortcode($opt , $content = null) {
$html = ‘<DIV class=”popo_highlights”>’;
if (isset($opt[‘title’])) {
$html .= ‘<DIV class=”popo_title”>’.$opt[‘title’].'</DIV>’;
}
$html .= $content.'</DIV>’;
return $html;
}[/php]

こんな構造です。

DIV class=”popo_highlights” 「こんにちは!」

DIV class=”popo_title” 「今回のみどころ」

プラグインを実行してみる

材料が揃った気がするので実行してみましょう。

記事中にショートコードを記述します。

[popo title=”今回のハイライト”]こんにちは![/popo]

そして記事のプレビューを見てみます。

こんにちは!
今回のみどころ

titleパラメータに指定した文字も、ショートコードに囲まれた文字も表示されました。

これをスタイルシートで見栄えを整えます。

スタイルシートを呼び出す

プラグインと同じディレクトリに「style.css」というスタイルシートのファイルを作成することにして、スタイルシートを呼び出す記述をします。

スクリプトなどを呼び出す「wp_enqueue_scripts」というタイミングで「$this(自身のクラス)」にある「enqueue」という関数を呼び出す、という記述になります。

[php title=”popo_highlights.php” start-line=”12″ mark=”3,5-7″] function __construct() {
add_shortcode(‘popo’, array($this, ‘shortcode’));
add_action(‘wp_enqueue_scripts’, array($this, ‘enqueue’));
}
function enqueue() {
wp_enqueue_style(‘popo-highlights’, plugin_dir_url(__FILE__).’style.css’);
}[/php]
wp_enqueue_style()でスタイルシートのURLを指定しています。

スタイルシートを作成する

プラグインと同じディレクトリに「style.css」というファイルを作成しましょう。

こんな感じのスタイルシートにしてみました。

[css title=”style.css” mark=”1-18″].popo_highlights {
position: relative;
margin: 24px 8px 16px 8px;
padding: 24px 8px 8px 8px;
border: 2px solid #8888ff;
background-color: #eeffff;
border-radius: 4px;
}
.popo_title {
position: absolute;
padding: 4px 16px;
top: -16px;
left: 24px;
font-size: 12px;
color: #ffffff;
background-color: #8888ff;
border-radius: 4px;
}[/css]

プラグインを実行してみる

スタイルシートも揃ったので実行結果を見てみます。

いい感じに表示されました。

[popo title=”今回の見どころ”]

  • こんにちは、「ぽぽづれ。」です!
  • WordPressプラグインを1から作ってみましょう。
  • こんな感じのものが作れます。[/popo]

こんな感じでリスト入力してもいい感じに表示されました。

今回のソース

プラグイン本体

[php title=”popo-highlights.php”]‘;
if (isset($opt[‘title’])) {
$html .= ‘

‘.$opt[‘title’].’
‘;
}
$html .= $content.’
‘;
return $html;
}
}
$popo_highlights = new popo_highlights;[/php]

スタイルシート

[css title=”style.css”].popo_highlights {
position: relative;
margin: 24px 8px 16px 8px;
padding: 24px 8px 8px 8px;
border: 2px solid #8888ff;
background-color: #eeffff;
border-radius: 4px;
}
.popo_title {
position: absolute;
padding: 4px 16px;
top: -16px;
left: 24px;
font-size: 12px;
color: #ffffff;
background-color: #8888ff;
border-radius: 4px;
}[/css]

その他

あとはスタイルシートをいじってみるなど、カスタマイズしてみてください。

もう一歩進めて設定画面を作りたいという方はこちらもどうぞ。

[link url=”https://popozure.info/20180202/12305″]

では、この辺で。(^-^)o

[amzn-link asin=”4774187062″][amzn-link asin=”B00M939Y0I”][amzn-link asin=”4798143774″][amzn-link asin=”B019GNUT0C”][amzn-link asin=”B01LATWL5G”]