2011-06-21 59 views
0

我在Wordpress網站的本地版本上爲Wordpress創建新的簡碼。破解Wordpress站點的簡碼

在functions.php中,我加入瞭如:

function shortTest() { 
    return 'Test for shortcodes '; 
} 

add_shortcode('shortTestHTML', 'shortTest'); 

添加功能僅是確定的,但是當我加入add_shortcode()部分,我得到的一個重大問題。

它打破了某種東西,我得到500錯誤,這意味着我甚至無法在本地加載我的網站了。

任何想法???

非常感謝!

編輯:

從PHP錯誤日誌: [21君2011 19時02分37秒] PHP致命錯誤:調用未定義的函數add_shortcode()中/用戶/喬納斯/站點/ JLL/WP -includes/functions.php on line 4505

+0

什麼是錯誤消息,PHP對你投擲?檢查你的PHP錯誤日誌。 – LazyOne

+0

[21-Jun-2011 19:02:37] PHP致命錯誤:調用未定義函數add_shortcode()在/Users/jonas/Sites/jll/wp-includes/functions.php上4505行 – jonasll

回答

5

1)確保你在某處包含了shortcodes.php文件(例如,在wp-load.php或其他更合適的地方)。 2)確保這個文件存在於你的安裝中(我認爲你有其他的錯誤,否則我們會看到不同的錯誤)。

3)你從哪裏調用這個函數(我看它被稱爲functions.php,但哪個地方)?可能的問題在這裏 - functions.phpshortcodes.php之前加載,如果在加載shortcodes.php之前確實使用add_shortcode函數,則很可能會看到此錯誤。在那個地方仔細檢查你的代碼 - 也許把電話轉到add_shortcode到另一個地方。

+0

1)我可以使用主題防止加載shortcodes.php並將其替換爲另一個include? – jonasll

+0

2)它存在...和3)我在函數的最後一行調用它.php – jonasll

+0

_「3)我在functions.php的最後一行調用它」_這就是問題所在。你真的應該在稍後調用它 - 當'shortcodes.php'被加載時(例如,在'wp-settings.php'文件末尾 - 但我不能100%確定這種方法是多麼正確)。 – LazyOne

0

檢查你的error.log文件(它應該在你的apache日誌文件夾中)。

它可能與不存在作爲函數的add_shortcode有關。

+0

[21-Jun- 2011 19:02:37] PHP的致命錯誤:調用未定義的函數add_shortcode()在/Users/jonas/Sites/jll/wp-includes/functions.php行4505 – jonasll

+0

任何方式使這項工作呢? – jonasll

2

在functions.php中加入這個你說?那麼我不知道,我做的方式是在wp-content/plugins文件夾中創建一個文件夾,例如shortcodetest。

在此文件夾內創建一個shortcodetest.php文件。

在該文件中

你基本上編寫代碼:?

<?php 
/* 
    Plugin Name: ShortCodeTest 
    Plugin URI: http://www.example.net 
    Description: Print a test message 
    Version: 0.1 
    Author: anonymous 
    Author URI: http://www.example.net 
*/ 

add_shortcode('shortcodetest', 'shortcodetest_function'); 

function shortcodetest_function() { 
    return "test of shortcode"; 
} 

>

然後你以管理員身份登錄,你會看到一個插件ShortCodeTest,激活它。然後,您可以在帖子中使用簡碼。

請注意,註釋非常重要......它們顯示在插件描述中。

0

把你的短代碼放在/wp-includes/shortcodes.php這個文件中,這樣你就可以確保當所有的吹哨和哨聲都啓動並運行時它會被加載。

1

我有一種方法來執行它們,但它是一個有點triky :)

你需要把你的簡碼(例如:[在線....]),以改變一點點你的模板<shortcode></shortcode>之間則

這裏是放置在你的function.php結尾的函數。

function parse_execute_and_echo_shortcode($_path) { 
    $str = file_get_contents($_path); 
    while (strrpos($str, "<shortcode>")) { 
     $beginShortcode = strrpos($str, "<shortcode>"); 
     $endShortcode = strrpos($str, "</shortcode>"); 
     $shortcode = substr($str, $beginShortcode + 11, $endShortcode - ($beginShortcode+11)); 
     $shortcode = do_shortcode($shortcode); 
     $str = substr_replace($str, $shortcode, $beginShortcode, $endShortcode + 12); 
    } 
    echo $str; 
} 

然後就可以調用function parse_execute_and_echo_shortcode,並給予它的路徑包含簡碼您的文件。

希望能幫助別人

1

提到functions.phpwp-include/ directory
它現在位於:wp-content/themes/<your-theme-name>/functions.php

+0

這是如何幫助解決問題的? – pomeh

+1

您應該在wp-content/themes/ /functions.php中創建短代碼 wp-include/functions.php不是用於添加短代碼的正確文件。 –

+0

這對我來說是正確的答案。謝謝!我正在修改錯誤的functions.php文件。 – fiacobelli