未添加WP短代码

时间:2016-01-24 20:13:23

标签: wordpress wordpress-plugin

我正在创建一个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函数?

1 个答案:

答案 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的所有属性都不是该数组的数组。

希望这可以帮助您开始这个。