相互リンク詳細へ

WordPressのウィジェットにプラグインなしでPHP記述・カスタム投稿表示での例

2019-08-20カスタマイズプラグイン不要

ウィジェットエリアに出力したいもので、PHPコードで記述したい場合、通常の「テキスト」や「カスタムHTML」では不可能です。

それを実現するプラグインなどを使う事も出来ますが、テーマのfunction.phpに少し手を加えるだけで、ウィジェットエリアのどこにでも「テキスト」を使ってショートコードで簡単に出力させる方法です。

 

プラグインはイヤだなーと探していたら、われらが「るなさん」のサイトに紹介されていました!
※るなさんは、高速・高機能・無料テーマ「Luxelitas(ルクセリタス)」の開発者様です。

参考:WordPress でプラグイン使わずにウィジェットで PHP コード動かす

 

今回は、るなさんが紹介して下さっている方法を使って、カスタム投稿で作成した記事をサイドバーに一覧表示する方法をまとめてみます。

 

カスタム投稿タイプをプラグインなしで作成する方法については以下をご覧ください。

 

ご紹介する方法は、FTP操作と、function.phpへの追記が必要です。

 

 

PHPをショートコードで利用できるようにする

以下、説明はカスタム投稿タイプを表示する内容ですが、PHPコードをウィジェットエリアで利用するための手順は共通です。

 

 

PHPファイルを用意する

実際に記述したいPHPコードを書いたPHPファイルを用意します。

今回はカスタム投稿で作成した記事をサイドバーにリスト形式で出力する方法なので、以下のように記述したファイルを用意。

<ul>
<?php
    $posts = new WP_Query( array(
            'post_type' => 'my_news',
            'posts_per_page' => 3
        )
    );
    if ( have_posts() ) : while ( $posts->have_posts() ) : $posts->the_post();
?>
    <li>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </li>
<?php endwhile; endif; wp_reset_query(); ?>
</ul>

投稿タイプ

'post_type’ => 'my_news’,

上記「my_news」の部分は、カスタム投稿で作成した投稿タイプ名に置き換えて下さい。

 

表示する行数

'posts_per_page’ => 3

上記であれば3つ表示します。お好みの数字に変更して下さい。

 

任意のファイル名で保存します。例:my_news.php

 

FTPでアップロード

作成したPHPファイル(my_news.php)を「function.php」があるのと同じ場所へアップロードします。

例えばルクセリタス(子テーマ使用)の場合は以下の場所

\public_html\wp-content\themes\luxech

 

FTPの使い方については以下をご覧ください。

 

 

function.phpの編集

function.phpファイルは最悪ワードプレスが動かなくなる可能性のある重要ファイルですので、バックアップを用意して下さい。

function.phpを触らずにPHPコードを処理単位で記述・管理できるプラグインもあります。
詳しくは以下をご覧ください。

 

子テーマの「function.php」に、必要事項を追記します。

※子テーマにfunction.phpがない場合や、子テーマ自体がない場合は、親テーマでも行えますが、親テーマを編集すると、アップデートなどでカスタマイズしたものは消えてしまいますので注意。

 

 functions.php を書き間違えると、WordPress そのものが動作しなくなります!

※バックアップをとるなど、必要な対応をしてから自己責任でお願いします。

 

//ウィジェットでPHPを有効に
add_filter( 'widget_text', function( $ret ) {
	$php_file = 'my_news';
	if( strpos( $ret, '[' . $php_file . ']' ) !== false ) {
		add_shortcode( $php_file, function() use ( $php_file ) {
			get_template_part( $php_file );
		});
		ob_start();
		do_shortcode( '[' . $php_file . ']' );
		$ret = ob_get_clean();
	}
	return $ret;
}, 99 );

 

PHPファイル名

$php_file = 'my_news’;

作成したPHPファイル名に置き換えて下さい。

 

以上で準備は完了です。

 

ウィジェットに出力する

ウィジェットで出力したいエリアに「テキスト」を追加します。

 

ショートコードでファイル名を記述します。

 

[PHPファイル名]

 

 

結果

「info」というカスタム投稿タイプに2つの記事がある例

 

サイドバーに一覧(リスト)表示

 

カスタム投稿記事が表示されない場合

上記のリンクをクリックしたり、直接アドレス入力でも記事が見れない場合

 

404エラーになり表示されない!

 

 

パーマリンクの設定を更新します。
設定→パーマリンク設定

 

何も変更をせず「変更を保存」を押します。

 

 

 

以上です。