我正在创建一个wordpress插件,用户输入一些信息,并能够生成短代码。我不太确定短代码应该去哪里 - 我目前的设置是基于类的,我希望能够在创建AJAX请求时创建一个短代码并且成功。以下两种方法在同一个文件中。
此方法通过admin-ajax.php文件调用:
public static function processAjax()
{
global $wpdb;
$event_data = $_POST['obj'];
$event_title = $event_data[0];
$event_subdomain = $event_data[1];
$result_events = $wpdb->get_results("SELECT * FROM wp_shortcode_plugin WHERE subdomain = '{$event_subdomain}'", OBJECT);
if (sizeof($result_events)>0) {
echo "duplicate";
} else {
add_shortcode($event_subdomain, 'getEmbed');
$results = $wpdb->insert('wp_shortcode_plugin', array("event_name"=>$event_title, "subdomain"=>$event_subdomain));
echo json_encode($_POST['obj']);
}
die();
}
这是我想要调用的getEmbed()方法。
public static function getEmbed()
{
return 'test';
}
然而,似乎没有创建短代码。我在这里错过了什么吗?另外,是否可以通过add_shortcode()方法将值传递给getEmbed函数?
答案 0 :(得分:1)
您应该使用update_option
来存储要加载的短代码的信息,而不是直接从AJAX添加短代码。如果选项不存在,则会创建它。
您将简单地使用wp_init
挂钩来加载您需要在主题或插件php文件的function.php
文件中加载的所有短代码。
您应该在get_option
挂钩中使用wp_init
并检查其中的值。您将需要具有与短代码相关联的功能,这些功能可以使用create_function
在php中自动生成,或者您可以通过1个函数(在您的php文件中定义)将它们路由到$atts
已定义$content
个参数,并根据您发送给该函数的get_option
的值执行任何操作。
add_shortcode
函数的值之后,应在wp_init
挂钩中定义 get_option
函数。您需要为您的选项命名并通过ajax函数添加它。该选项很可能想成为一个数组,wordpress将自动序列化。比使用从get_option
返回的数组循环遍历短代码数组,并根据需要多次调用add_shortcode
。这需要设置您的选项数组,以便它在数组的每个索引中定义一个短代码标记。我个人会将短代码标记作为数组的关键字,短代码imo的所有属性都不是该数组的数组。
希望这可以帮助您开始这个。