普通の別記事挿入にも対応。記事公開状態連動型別記事挿入プログラム改良 ~ WordPressの無料テーマGushをカスタマイズ。
せっかくカスタマイズ可能なWordPress、プラグラムを改造することで記事に別記事を挿入して過去記事リンク保守楽ちん!というところまでできました。最終段階として、単純な別記事挿入機能と公開状態連動型別記事挿入機能をマージしました。
前回の別記事挿入機能とマージ
似たような機能で、しかも大して高機能でもない関数をたくさん作るとメンテナンスが面倒なので、先日作成した「記事に別記事を挿入するプログラム」とマージしてみました。そこそこ機能があるものであれば、トラブったときの解析が簡単なのでマージはしないほうが良いです。そこは経験値に合わせてってところでしょうか。
機能の切り替え方法ですが、記事本文分割する時に、「<------>」という文字列をキーワードにして分割しますので、これが無いと分割に失敗してすべての結果は「id」に挿入されます。これを利用してただの挿入か挿入先記事の状態判断をして挿入するのかを判定するようにしました。
//記事挿入表示ショートコード変換
function insert_content( $atts ){
extract( shortcode_atts( array( // ショートコード引数の取得
'id' => -1 ), $atts )); // idがセットされていない場合は-1
$the_post = get_post( $id ); // 挿入元記事の取得
if( $the_post != null ){ // 挿入元記事が取得できていれば
// 挿入元記事からデータを分割
list( $pid, $content0, $content1 ) = explode( "<------>", $the_post->post_content );
// 分割個別挿入か?
if( $content0 != '' ){
// 挿入先記事の公開状態を確認
$status = get_post_status( $pid );
// 公開中であれば新情報設定
if( $status != false )
if( $status == 'publish' ) $content = $content1;
else $content = $content0;
else $content = "<p>INSERT-CONTENT: NOT FOUND PARENT POST ID.</p>";
}
else{
// 普通の別記事挿入機能
$content = $the_post->post_content;
}
}
else $content = "<p>INSERT-CONTENT: NOT FOUND POST ID.</p>";
return $content;
}
add_shortcode( 'insert-content', 'insert_content' );
記事公開状態連動型別記事挿入プログラム
機能説明
- ショートコードを使い、別記事を挿入します。
- 公開状態連動型別記事挿入機能
別記事が特定のフォーマットで書かれていた場合、状態参照記事IDの公開状態によって、別記事前半部分と後半部分を切り替えて挿入します。
公開状態連動型別記事挿入機能を使う場合、以下のように記述します。
状態参照記事ID
<------>
状態参照記事が公開ではない場合の表示情報
<------>
状態参照記事が公開時の表示情報
これにより、「最新記事が公開されるとともに、すべてのリンクリスト表示が更新される」という機能を実現します。
記事への記載方法
記事を作成時、以下のようなショートコードを記載します。
[insert-content id=挿入元記事ID]
挿入元記事の書き方については、機能説明を参照してください。
Gushへの組み込み方法
上記ソースコードを、functions.phpに組み込みます。functions.phpは、WordPressがインストールされているフォルダの中にあるGushテーマがインストールされているところにあります。具体的には、「wp-content\themes\gush」の中にあります。
functions.php内の177行目(最後の行)に「?>」という行がありますが、ここの直前にソースコードを挿入します(Gush V1.1.0の場合)。
今日の一言二言三言
何でもね 作るのほんとに 楽しいな
とりあえずやってみたいことは完了したので本番環境のWordPressに組み込んでみました。これからGushやWordPress関係の記事からちょっとずつ整理していこうかと思います。
実際の関数名ですが、今後のことも考えて、SiSO-LAB作成の機能には「silf_」と頭に付けることにしました。シンプルな関数名にすると、元々PHPやWordPressに実装されている関数とぶつかっちゃうと困るので。「SIso Lab Function」の略です。
「記事に別記事を挿入できるようにしよう!」から発展して、挿入先記事の公開状態に応じて、記事中の挿入する部分を選択する機能を追加してみました。
シンプル&レスポンシブデザインなWordPress無料テーマ、Gushをカスタマイズ。のまとめ。
WordPressは2014/04あたりから触り始めたばかりですが、Gushというレスポンシブデザインの無料テーマを利用してカスタマイズしています。PHPプログラミングも初めてで、楽しくやっています。
Your Message