web-dev-qa-db-ja.com

動的にコンテンツを生成するために、ページ/投稿内でfunctionを呼び出す方法

ファイルfunctions.phpに以下の関数を追加しました。

function contentGenerator($param) {
   if($param) {
      echo "Content true";
   } else {
      echo "Content false";
   }
}

- /のブログ記事またはページ内でこの関数を呼び出す方法

3
Sven

あなたが投稿の/ページのコンテンツについて話しているなら、それは不可能です。ここにあなたの問題を解決する3つの異なる方法があります。最初の方法はあなたの投稿(またはページ)のコンテンツの中に生成されたコンテンツを追加する可能性をあなたに与えるでしょう。他の2つはあなたのテンプレートファイルの1つに印刷されます。例えば。あなたのsingle.phpまたはpage.phpに。

1.ショートコード

これは Shortcode API examplesから多少コピー/貼り付けされています。あなたのfunctions.phpまたはあなたのカスタムプラグインの1つにそれを置いてください。

次の構文を使用して、投稿またはページのWYSIWYG関数を含めることができます。

[unique_shortcode_name foo="123" bar="medium"]

これをあなたのfunctions.phpまたはあなたのカスタムプラグインのいずれかに置いてください:

add_shortcode('unique_shortcode_name', 'generate_content');
function generate_content($attributes) {
    // Parses the parameters/attributes and makes them available as variables.
    extract(shortcode_atts(array(
        'foo' => 'default value for foo',
        'bar' => 'default value for bar',
    ), $attributes));

    // Generate stuff
    $output = complex_content_generation_goes_here();

    return $output;
}

コンテンツを囲むショートコードを作成することもできます。ショートコードを囲むと、テキストとしてパラメータを取ることができます。それはこのような何かと呼ばれるかもしれません:

[unique_shortcode_name foo="123"]Some text input[/unique_shortcode_name]

詳細については Shortcode APIドキュメント をご覧ください。

2.ページテンプレート

これにより、 page に特定のテンプレートファイルを設定することができます(これは通常の投稿では機能しません)。これは ページテンプレート に関するドキュメントです。

page.phpのように、既存のテンプレートファイルからテンプレートを作成することができます。唯一の要件は、次のようにテンプレートファイルの先頭に複数行のコメントを入れることです。

<?php
/*
Template Name: Products Page
*/
?>

ファイル名の要件は実際にはありませんが、テンプレート階層を介してWordPressに認識される可能性があるため、名前を付けないようにしてください(nr 3を参照)。もしそうすると、WordPressはあなたのテンプレートを他のページにも使用するかもしれず、それはあなたに予期しない結果をもたらすでしょう。

上記の手順を正しく行った場合は、ページを編集または作成しているときにPage Attributesの下にドロップダウンのあるTemplateセクションが表示されます。このような:

Image showing the template settings on a page edit

3.テンプレート階層

テンプレート階層 現在のページビューにどのテンプレートを使用するかを決定し、その名前で適切なファイルを探します。 テンプレート階層の本当に説明的なイメージ がCodexにあります。テンプレート階層がどのように機能するかをよりよく理解するために、それを検討してください。

6
hampusn

contentGenerator($param);
このコードを単純にpage.phpファイルに入れます。
function.phpで関数を定義すると、その関数はテーマのいくつかのテンプレートファイルで使用できます。

1
dipali