簡體   English   中英

將自定義PHP添加到Wordpress頁面

[英]Adding custom PHP to Wordpress page

我有一個小的名稱生成器腳本,正在嘗試添加到我的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()

(文件名gen-page.php是我的模板文件,位於我的主題目錄中...似乎正在嘗試在我的根目錄中找到它。)

我需要將表單與生成器放在不同的頁面上嗎? 我需要使用Wordpress插件來顯示PHP嗎? 我剛接觸Wordpress,但不確定自己做錯了什么。 任何幫助表示贊賞!

嘗試將此代碼移至主題中的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]。 系統將選擇已注冊的簡碼並執行您的代碼。

希望能有所幫助。 祝好運。

我知道有兩種選擇可以實現此目的:

  1. 您可以創建一個自定義頁面模板 ,其中包含此代碼以及所需的現有頁面內容。 然后,您只需在創建頁面時選擇此模板,它就會出現並正常工作。
  2. 您可以嘗試許多PHP插件之一 ,盡管我沒有使用它們的經驗。

我個人會推薦第一種選擇。

我希望這有幫助!

問題是您將表單的action直接設置為模板文件(使用相對URL,無論如何都不太可能),並且無法正確初始化WordPress。 將其替換為使用該模板的頁面的(絕對)永久鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM