2017-02-16 53 views
1

我一直在研究一個插件,我一直試圖在註冊爲激活掛鉤的函數中添加短代碼。我知道該函數正在被調用,因爲如果我在函數內部添加echo語句,WordPress會在發送頭文件後抱怨接收輸入,但不會顯示短代碼。但是,如果我將add_shortcode移到該函數之外,那麼一切正常。在激活掛鉤中註冊短代碼不起作用

有什麼問題出錯了嗎?

這工作:

<?php 
/* 
Plugin Name: Testing 
*/ 

function short_code($atts) { 
    return "This is a test"; 
} 

function activate() { 
    add_shortcode('testing', 'short_code'); 
} 

//register_activation_hook(__FILE__, 'activate'); 
add_shortcode('testing', 'short_code'); 

這並不:

<?php 
/* 
Plugin Name: Testing 
*/ 

function short_code($atts) { 
    return "This is a test"; 
} 

function activate() { 
    add_shortcode('testing', 'short_code'); 
} 

register_activation_hook(__FILE__, 'activate'); 
//add_shortcode('testing', 'short_code'); 
+0

歡迎來到Stack Overflow!你可以學習[問]並創建[mcve]。這使我們更容易幫助你。 – Faegy

+1

@Faegy用最小的例子 –

回答

2

register_activation_hook只能觸發一次 - 當插件被激活。因此,您的短代碼僅在激活時被註冊一次,然後不再可用。

您應該像第一個示例中那樣使用add_shortcodeadd_shortcode本身就是一個鉤子,它不需要在另一個鉤子裏面。

+0

更新了我的問題,效果很棒!我只是假定'add_shortcode'註冊它直到'remove_shortcode'被調用。 –

+0

很高興能幫到你! –