サポート » 使い方全般 » ページでのPHPの使用方法

  • 解決済 surfweb

    (@surfweb)


    的はずれな質問かもしれませんが、よろしくお願いいたします。

    あるページの書き出しで、今日の日付け(最新)の後に「最新情報=現在追加情報はありません」として、投稿時ではなく最新の日付を自動的に入れたいのですが、
    <?php
    <b><? print (date (“Y.n.j”));?></b>
    ?>
    という日付表示のphpスクリプトがページ内で動きません。
    ワードプレスではなく、通常の.phpであればモジュールphpとしてサーバー内で動きます。

    .phpファイルではないので、動かなくて当然だと思うのですが、ページの一行目(書き出し)に最新の日付けを入れ、自動更新するにはどうしたら良いのでしょうか。

    ご教授よろしくお願いいたします。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • shokun0803

    (@shokun0803)

    いまいち状況がはっきり分かりませんが、ページの投稿画面で直接phpを記述したのですか?だとすると動きません。

    それともページ用のテンプレートにコードを記述したのですか?だとすれば、どのファイルのどの位置に記述したのか、記述したコードの周辺のコードもまとめて記述すると何か問題が発生している箇所があるのか判断材料にもなります。ちなみにコードを記述する時は「code」を使用しましょう;)

    showBOO

    (@showboo)

    実際に使ったことはないですが、Exec-PHPなどのプラグインを使えば、
    POSTやPAGEの中でphpコードが使えると思います。

    kvex

    (@kvex)

    showBOO さんの意見でOKじゃないかな?
    あと、似てるプラグインとしてrunPHPがあります。

    runPHPを使ってるのでそのやり方を書くとすると

    1.通常に投稿画面に行く、

    2.記事本文に

    <?php
    echo "Hello Wordld";
    ?>

    などのphpコードを記述する

    3.投稿画面の下の方に runPHP というチェックがあるので、チェックを入れる

    4.投稿する

    です。

    shokun0803

    (@shokun0803)

    まあ、あえて書かなかったことと、お二人とも触れていないので追記しますが、Exec-PHPやrunPHPなどのプラグインを導入することはセキュリティを落としかねないのでお勧めしていません。

    今回のように特定の場所にのみ記述したいのであればテンプレートに直接記述するべきでしょうし、記事中の任意の場所に今回のような特定の記述をしたいのであればショートコードをお勧めします。

    まあ、悪い方法だとはいいませんし、確かに簡単な方法なのかもしれませんが、使い方だけではなくリスクも一緒に説明してあげる方が親切だと思います;)

    showBOO

    (@showboo)

    まあ、悪い方法だとはいいませんし、確かに簡単な方法なのかもしれませんが、使い方だけではなくリスクも一緒に説明してあげる方が親切だと思います;)

    確かにそうですね。
    安易な返答で申し訳ありませんでした。

    kurosquare

    (@kurosquare)

    ページの一行目(書き出し)に最新の日付けを入れ、自動更新するにはどうしたら良いのでしょうか。

    こういう時こそWordPressらしく、ショートコードAPIを使ってみます。

    functions.phpに以下を追加。

    function dateplease_func($atts) {
    	extract(shortcode_atts(array(
    		'format' => 'Y.n.j',
    		'before_tag' => '<strong>',
    		'after_tag' => '</strong>'
    	), $atts));
    	return the_date($format,$before_tag,$after_tag,false);
    }
    add_shortcode('dateplease', 'dateplease_func');

    ページの編集画面で本文中に[dateplease]と入れます。
    その時の気分で[dateplease format="Y年n月j"]とかにしてもいいかもです。

    akihiro

    (@akihiro)

    kurosquareさん、ためになる例示、ありがとうございます。

    でも、surfwebさんはページ・テンプレートに記述してるんじゃないのかなぁ?

    で、そもそも

    <?php
    <b><? print (date (“Y.n.j”));?></b>
    ?>

    ↑の書き方そのままならphpの命令が入れ子になっててエラー出ますけど…。

    勘違いしていたらすみません。

    surfweb

    (@surfweb)

    みなさん、たくさんのご返信ありがとうございます。
    プラグイン、ショートコードAPIともにこれから試してみます。

    うまく表示されましたら「解決済み」マークを付けさせていただきます。
    ありがとうございました。

    surfweb

    (@surfweb)

    ご報告です。以下をページで実行

    <?php
    $time = date(“Y年n月j日”);
    print($time);
    ?>

    ショートコードAPIでは、[dateplease]でページ作成日の日付が出てしまいました。表示したいのは常に今日の日付です。

    runPHPはダッシュボートの検索からはリンク切れでしたので、Googleで検索してアップロードして有効化すると、なぜか2.2.2と2.3.1の両バージョンが表示され、どちらを有効化しても日付は表示できませんでした。

    最後に、Exec-PHPを入れたら今日の日付が表示されました。ただ下記のような警告メッセージが出たので良く意味がわからないのですが、ユーザー管理画面より表示オフに設定したら表示が消えました。

    Exec-PHP WYSIWYG Conversion Warning. Saving this article will render all contained PHP code permanently unuseful. Even if you are saving this article through the Code editor. You can turn off this warning in your user profile. Ignore this warning in case this article does not contain PHP code. Read the Exec-PHP documentation if you are unsure what to do next.

    セキュリィティ的には気になりますが、これで任意のページに常に本日の日付を表示できるようになりました。

    いくつかアドバイスいただけるかもしれないので、もうしばらくオープンのステータスを継続させていただきます。よろしくお願いいたします。

    surfweb

    (@surfweb)

    > 3.投稿画面の下の方に runPHP というチェックがあるので、チェックを入れる

    あっ..これ忘れてました。動かなかったのはそれが原因かも^^;
    でも1つのプラグインをアップして2つのバージョンが表示されるのはちょっと不思議です。

    LVP8

    (@lvp8)

    プラグイン(Exec-PHP)の利用が、今日の日付け(最新)のためだけで、表示位置が一定なのでしたら、カスタムフィールドを利用するのも一つの方法ではないでしょうか。

    例えば、カスタムフィールドの meta_key を mydate などとして、日付を表示したい投稿の meta_value を true とか 1 にする。

    テーマの表示したい位置に下記のようなコードを追加すれば、値があるときだけ日付を表示してくれます。(コードは、適切でないかもしれません)

    <?php if (get_post_meta($post->ID,'mydate')) { ?>
    <b><?php echo date('Y年n月j日'); ?></b>
    <?php } ?>

    カスタムフィールドテンプレートなどを使っているのでしたら、チェックボックスやラジオボタンでそのフィールドを作ってしまえば楽になると思います。

    [mydate]
    type = checkbox
    label = 日付出力

    kurosquare

    (@kurosquare)

    Exec-PHPで解決なさったようですが、念のため。

    ショートコードAPIでは、[dateplease]でページ作成日の日付が出てしまいました。表示したいのは常に今日の日付です。

    最新記事の投稿日かなと思いましてthe_date()を使ってしまいました。「今日の日付」であれば、まあdate()を使えばいいと思います。

    前掲 functions.php で
    return the_date($format,$before_tag,$after_tag,false);
    の代わりに以下へ(未検証)。
    return $before_tag . date($format) . $after_tag;

    #今考えたらショートコード使うほどでもないかもですが、回答した以上、補足しておきます。

    surfweb

    (@surfweb)

    追加ならびに補足説明ありがとうございます。
    解決済みとさせていただきます。
    ありがとうございました。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「ページでのPHPの使用方法」には新たに返信することはできません。