我有一个小名称生成器脚本,我想添加到我的Wordpress网站。脚本本身工作正常,我只是不知道如何正确显示它。
这是一个简单的选择表单 - 用户选择一个字符竞赛和一些要生成的名称,脚本从各种文本文件中提取并吐出名称。 (这是一个现场演示: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是我的模板文件,位于我的主题目录中......似乎它正试图在我的根目录中找到它。)
我是否需要将表单放在与生成器不同的页面上?我需要使用Wordpress插件来显示PHP吗? 我对Wordpress很新,而且我不确定我做错了什么。任何帮助表示赞赏!
答案 0 :(得分:1)
尝试将此代码移动到主题中的functions.php文件中,并将设置设置为短代码。短代码api位于here,但下面基本上是您需要做的。
这将涉及将所有代码包装在函数中,然后创建一个短代码。
在主题的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]。 系统将选择已注册的短代码并执行您的代码。
希望有所帮助。祝你好运。
答案 1 :(得分:0)
我知道有两种方法可以实现这一目标:
我会亲自推荐第一个选项。
我希望这有帮助!
答案 2 :(得分:0)
问题是您将表单的action
直接设置为模板文件(使用相对URL,这在任何情况下都不太可能有效),并且不能正确初始化WordPress 。将其替换为(绝对)永久链接到使用模板的页面。