0

Wordpress Web サイトに追加しようとしている小さな名前生成スクリプトがあります。スクリプト自体は正常に動作しますが、正しく表示する方法がわかりません。

これは単純な選択フォームです。ユーザーが生成する文字種族と多数の名前を選択すると、スクリプトがさまざまなテキスト ファイルから抽出して名前を吐き出します。(ライブデモはこちら: http://muthaoithcreations.com/name2.php )

<?php

if(isset($_POST['submit']) && !empty($_POST['race']) && !empty($_POST['number'])) // after submitting and all fields are filled, this gets ran and the form below disappears
{
  $race = $_POST['race'];
  $number = $_POST['number'];

  echo "<p>You asked for $number $race name(s):</p>";

$first = explode("\n", file_get_contents($race.'first.txt'));
$middle = explode ("\n", file_get_contents($race.'middle.txt'));
$last = explode("\n", file_get_contents($race.'last.txt'));
$first2 = explode("\n", file_get_contents($race.'first.txt'));
$last2 = explode("\n", file_get_contents($race.'last.txt'));

shuffle($first);
shuffle($middle);
shuffle($last);
shuffle($first2);
shuffle($last2);

if ($race == "Horc") { 
    for ($i = 0; $i < $number; $i++) {
    echo $first[$i] . $last[$i] . ' ' . $first2[$i] . $last2[$i] . "<br />\n"; }
} elseif ($race == "Tiznt") {
    for ($i = 0; $i < $number; $i++) {  
    echo $first[$i] . $middle[$i] . $last[$i] . "<br />\n"; }
} else {    
    for ($i = 0; $i < $number; $i++) {  
    echo $first[$i] . $last[$i] . "<br />\n"; }
}

echo '<p><input type="button" onclick="history.back();" value="Go Back and Try Again!"></p>';

}

else // when the page loads, this else clause gets ran first
{

  echo '<p style="color:red;">Please choose your options.</p>';
?>
<form action="name2.php" method="post">
<label for="race">Select Charater Race:</label>
<select name="race" id="race" />
<option value="Oofo" selected>Oofo</option>
<option value="Tiznt">Tizn't</option>
<option value="Werm">Werm</option>
<option value="Horc">Horc</option>
</select>
<label for="number">Names to Generate:</label>
<select name="number" id="number" />
<option value="1" selected>1</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="20">20</option>
</select>
<input type="submit" name="submit" value="Give Me Names!"/>
</form>
<?php
}
?>

ジェネレーター コードをページ テンプレートに配置し、そのテンプレートを使用して新しいページを作成すると、フォームは正しく表示されますが、ユーザーがフォームを送信すると、次のようになります。

致命的なエラー: 7 行目の /home/content/09/10184409/html/namegen-page.php の未定義関数 get_header() の呼び出し

(ファイル namegen-page.php は、テーマ ディレクトリにあるテンプレート ファイルです...ルート ディレクトリで検索しようとしているようです。)

ジェネレーターとは別のページにフォームを配置する必要がありますか? PHP を表示するには、Wordpress プラグインを使用する必要がありますか? 私はWordpressにかなり慣れていないので、何が間違っているのかわかりません。どんな助けでも大歓迎です!

4

3 に答える 3

1

このコードをテーマの functions.php ファイルに移動してみてください。設定はショートコードとして行われます。ショートコード API はここにありますが、基本的に必要なことは以下のとおりです。

これには、関数内のすべてのコードをラップしてから、短いコードを作成することが含まれます。

テーマの functions.php ファイル内

    //This is only to make sure another function doesn't already have that name
    if ( ! function_exists( 'custom_name_generator' ) ) {
        function custom_name_generator(){
          //copy and paste your code here
        }
    }
                   //shortcode name,         reference to the function name
    add_shortcode( 'custom_name_shortcode', 'custom_name_generator' );

コンテンツ領域内のページの管理画面で、[custom_name_shortcode] を配置できるようになりました。システムは登録されたショートコードを選択し、コードを実行します。

それが役立つことを願っています。幸運を。

于 2013-05-30T12:23:00.947 に答える