vdeep

*

vdeepはプログラミング、IT、Web技術、ライフハックの事などなどを管理人okutaniがつぶやくブログです。月間13万PV〜。

WordPress投稿ページにPHP利用→ショートコードを使おう!

      2017/01/31

LINEで送る
Pocket

wp-php-in-article
こんにちは、okutani(@okutani_t)です。WordPressではPHPを使って動的なサイトを構築しています。しかし、投稿ページや固定ページでは、そのままPHPを利用することができません

Exec-PHP」等のプラグインを使うことで、投稿ページからPHPを利用することができますが、この方法はセキュリティ上あまりよろしくないようです。

今回はプラグインを使わずにショートコードを使って投稿ページでPHPを使う方法を紹介します。

WordPress設定ファイルをいじっていくので、適宜サイトのバックアップをとってから作業していきましょうね。

では、さっそくショートコードを使ったPHPの利用方法をみていきましょう。

スポンサーリンク

PHPファイルの作成

投稿ページに直接、PHPを記述することができないため、次の手順で利用していきます。

  1. 実際の処理を書いたPHPファイルの用意
  2. functions.phpからPHPファイルの読み込み、ショートコードを作成
  3. 投稿ページからショートコードを利用する

上記の手順で、PHPを投稿ページで利用できます。

まずはショートコードについての説明を見ていきましょう。

ショートコードについて

ショートコードは「functions.php」に関数(便利に使えるプログラムの処理のかたまりのこと)を用意しておき、投稿ページからその関数を読み込むことで、記述した処理をおこなうことができる機能です。

説明だけではわかりにくいと思いますので、サンプルを用意してみました。

<?php
function shortcode_func() {
  return "Hello! WordPress";
}

add_shortcode('sc1', 'shortcode_func');

この「add_shortcode()」の一つ目の引数「sc1」を投稿ページから呼ぶことで、2つ目の引数「shortcode_func」から「returnの中身」が返ってきます。

投稿ページから下記のコードを記述し、投稿してみてください。

[sc1]

たったこれだけです。記事内に「Hello! WordPress」と表示されていれば成功です。

決まり文句などをショートコードにしておけば、すっきりかつ簡単に投稿ページに文を挿入することができますね。

PHPファイルをショートコードから読み込む

では、ショートコードを使って実際にPHPファイルを読み込んでみましょう。

ショートコードは「functions.php」に記述していきます。

<?php
function short_php($params = array()) {
  extract(shortcode_atts(array(
    'file' => 'default'
  ), $params));
  ob_start();
  include(get_theme_root() . '/' . get_template() . "/$file.php");
  return ob_get_clean();
}

add_shortcode('myphp1', 'short_php');

もし子テーマを使っている場合は、7行目の記述を下記のとおりに書き換えます。

include(get_theme_root() . '/' . get_template() . "/$file.php");

↓

include(STYLESHEETPATH . "/$file.php");

STYLESHEETPATH」を利用することで、子テーマのcssファイルまでのパスを取得することができます。極力、子テーマで利用するのが好ましいですね。

上記の関数を用意することで、ショートコード用に準備しておいたPHPファイルを次の形で呼び出すことができます。

[myphp1 file='foo']

file=’PHPファイル名’」とすることで、読み込みたいPHPファイルを指定できます。

サンプルとして、「foo.php」を用意して、ちゃんと記事内で読み込めるか確認してみましょう。functions.phpと同じ場所にfoo.phpを作成し、下記コードを記述します。

<?php echo 'Hello! myphp';

これで記事に「Hello! myphp」と表示されていれば、ショートコードを使ったPHP呼び出しができています。

これで、PHPを投稿ページで使うことができますね。

まとめ

プラグインを使わずに、PHPを投稿ページで利用することができました。

一度設置してしまえば、かんたんにPHPが利用できるようになりますね。ぜひ試してみてください。

この記事が気に入ったら
いいね ! しよう

Twitter で
LINEで送る
Pocket

okutani (@okutani_t) のヒトコト
子テーマからの読み込みがうまくできなかったのですが、STYLESHEETPATHを使うことでうまくいきました。WordPressは奥が深いです。

 - PHP, WordPress

スポンサーリンク

PC用AdSense

PC用AdSense

Share
  • このエントリーをはてなブックマークに追加
  • sevi

    はじめまして

  こちらの関連記事もどうぞ

『Vagrant+VCCW』でWordPressローカル環境を構築してみよう

こんにちは、okutani(@okutani_t)です。お店のサイトやブログなん …

ロリポップにWordPress導入&ムームードメインの独自ドメインを設定する

こんにちは、okutani(@okutani_t)です。本記事では、「ロリポップ …

PHPMailerを日本語で便利につかう「NPHPMailer」作ってみた

こんにちは、okutani(@okutani_t)です。PHPでメール機能を実装 …

[PHP]自作ライブラリをComposer化&Packagistの登録方法

こんにちは、okutani(@okutani_t)です。本記事では、以前作った「 …

[初心者向け]これだけ読めばOK!WordPress記事投稿の全工程まとめ

こんにちは、okutani(@okutani_t)です。本記事では、WordPr …

PHPでSlackに「クリームたいやき食べたよ」とメッセージ送るアプリつくった

こんにちは、okutani(@okutani_t)です。先日、前の会社の同期4人 …

[PHP]Composerを導入&はじめてのパッケージインストールまで

こんにちは、okutani(@okutani_t)です。『Composer』とい …

WordPressでテーブルを利用する方法(HTML+CSS)

こんにちは、okutani(@okutani_t)です。サイトを運営していると、 …

[PHP]はじめてのSmarty導入手順まとめ

こんにちは、okutani(@okutani_t)です。今回はPHPのテンプレー …

[Stinger5] リード文下のAdSense広告をPC・スマホ用サイズに分岐して表示する

こんにちは、okutani(@okutani_t)です。AdSenseの広告サイ …

vdeepのトップページへ戻る画像です。風船の形をした島を女の子が掴んでいます。