WordPressプラグインEXEC-PHPを使わずにウイジェットにショートコードを使うことにした経緯。追記あり

セキュリティーは大事

>>なぜexec-PHPがモテるのか | WP-D

EXEC-PHPって危険なの?

わかりません(ねこもりやには)。

って、でも、Wordpressを自動インストールして、無料配布のテンプレート使ってブログ書いてる人ってその程度なんじゃないですか?

PHPってナニ?って人だって、意識しないで使えるからWordpressがここまで使われるようになったわけで、おまけに便利なプラグインが沢山あるから、MovableTypeより人気なんでしょ?ちがうの?

注:あくまで、ねこもりや個人の感じること、主観です。

色々な意見があるなか、火種?と同じ方が書かれたこちらがとても参考になりました。

WordPressのプラグインのセキュリティについて、少し真面目な話をします。 | WP-D

また、個別のプラグインを取り上げて良し悪しを細かく書いたところで、実際のところ似たような用途のプラグインはたくさんあり、中にはつい昨年作られたものもあります。使うのは危険だと考えている側ですので、名前を挙げることはしませんが、それらの新しいプラグインに比べて、実際はExec-PHPプラグインはかなりセキュリティに配慮されており、考えられる危険性は極力排除した実装になっています。

で、どうするの?

ねこもりやの結論

はい、PHPが、あまり得意ではないねこもりやは、わかる人たちがちゃんとわかりやすく解説してくれるページを沢山読み(←ココ大事)、”EXEC.PHP”だけが「危険」とは言えないけども、もし、少しでも「ん?」と、心にひっかればその心にしたがおうと思うので、今回は使わないで同じような状態を実装する方法を探しました。

勿論、昨今のwordpress改ざん事件ブルートフォースアタックによる集中的にログインを試みる状態も相変わらず続いてることも、EXEC.PHPを使わずにと考えた大きな要因です。
>>大変なことになっています、ロリポップレンタルサーバーヽ((◎д◎ ))ゝ
>>ブルートフォースアタック? 

ショートコードを使おう

Exec-PHP愛好家向けショートコードプラグインの作り方 | firegoby
Exec-PHPで書いたPHPコードをショートコードに書き換える方法 | ユメミチ

Post Snippetsを使う

で、このショートコードを簡単に実装できるプラグインを見つけました(´ー`)┌フッ(え、またプラグイン?)

人それぞれ、自分でショートコードプラグイン作るもよし、プラグインに頼るもよし!
>>WordPress › Post Snippets « WordPress Plugins

PHPの知識がなくてもショートコードが作成・管理できるWordPressプラグイン「Post Snippets」 | ど素人からでもプログラマ!
【Post Snippets】ショートコード・phpも登録できて便利さに感動! | WordPress奮闘記

ちょっと、戸惑ったところもあるので、解説。

いままで、サイドバーのウイジェットに書いてるPHPをこちらに移すわけだけど、例えば・・・

今後の投稿予定
<?php
$my_query = new WP_Query('post_status=future&order=DESC&showposts=5');
if ($my_query->have_posts()) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
<ul class="future-post">
<li><?php the_time("Y年n月j日(D)"); ?> <?php if (strlen($post->post_title) > 60) {echo mb_substr(the_title($before = ”, $after = ”, FALSE), 0, 60) . ‘…’; } else {the_title();} ?><br />
<?php if ( count( get_the_category() ) ) : ?>
					<?php printf( __( 'カテゴリ: %2$s', 'ari' ), 'entry-utility-prep entry-utility-prep-cat-links', get_the_category_list( ', ' ) ); ?>
				<?php endif; ?>
				<?php
					$tags_list = get_the_tag_list( '', ', ' );
					if ( $tags_list ):
				?>
					<?php printf( __( 'タグ: %2$s', 'ari' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list ); ?>
				<?php endif; ?>

</li>
</ul>

    <?php endwhile;
}
?>

 <?php wp_reset_postdata();?>

今まで、ウイジェットに直接書いてた↑のコードの、
最初の「<?php」と最後の「?>」を除いたものを↓下図のように入力し、”Shortcode”と”PHP Code”の二か所に必ずチェック。 
ねこもりやは、一回コレを忘れてエラーでサイトが表示できなくなった、、、L(゚□゚)」オーマイガ!

post snippets入力画面

 

ねこもりやが、「????」と思ったのは、
<?php」と「?>」ってセットなわけだから、例えば、「<?php wp_reset_postdata();?>」の「?>」だけ抜いて、「<?php wp_reset_postdata();」ってなるのがなんかしっくりこなかったんだけど、それでいいんだって。

 

入力が間違いなかったら”Update Snippets”ボタンをクリックすると更新されます。
もし、間違ってたらエラーになって管理画面が表示できないってコトもあるので、慎重に。

サーバーがロリポップで、403エラーになる場合は、以下を参考になさってみてください。
>>WordPress「Forbidden 403 エラー」のほとんどが解決する3つの対処法 | WordPress奮闘記
>>ロリポップ上のWordPressをWAFで防御する方法 | HASHコンサルティングオフィシャルブログ

事前にちゃんとバックアップするなりは必要です。 ねこもりやみたいにこの入力画面でエラーになったら、戻るボタンで戻って今作成したスニペットを削除すれば大丈夫でした。(画面更新要)

できたら、今までのウイジェットを以下の様に書き直してできあがり!

今後の投稿予定
  • 2017年8月15日(火) キャットトラピーズでご満悦♪最近、一層甘えん坊になった"うらら"。
    カテゴリ: Instagram

[”と”]”の中は、 入力画面で作った「Title」。

ウイジェットでショートコードを使うためには

おっと、その前に・・・
ウイジェットでショートコードを使うには、functions.phpに以下を付け加えます。

/*ショートコードをウイジェットでも使えるように*/
add_filter('widget_text', 'do_shortcode');

このプラグインのいいとこは、作ったスニペットをエクスポートして使いまわせるとこ。
もし、沢山サイトを管理してて、同じようなコード使ってるならインポートして使えるので便利ですよね♪

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA