2017-02-16 94 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

很高兴能帮到你! –