【问题标题】:WP Shortcodes not being added未添加 WP 简码
【发布时间】:2016-01-24 20:13:22
【问题描述】:

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

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    您应该使用update_option 存储要加载的短代码信息,而不是直接从 AJAX 添加短代码。如果选项不存在,则会创建它。

    您将简单地使用wp_init 挂钩来加载您需要在主题或插件php 文件的function.php 文件中加载的所有短代码。

    您应该在wp_init 挂钩中使用get_option 并检查其中的值。您将需要与短代码相关联的函数,可以使用 create_function 在 php 中自动生成,或者您可以通过 1 个函数(在您的 php 文件中定义)将它们路由,该函数将具有 $atts$content根据您发送给该函数的get_option 的值定义参数并执行任何操作。

    add_shortcode 函数应在检查get_option 函数的值后定义在wp_init 挂钩中。您需要为您的选项命名并通过 ajax 函数添加到它。该选项很可能希望成为一个数组,该 wordpress 将自动序列化。比你使用从get_option 返回的数组来循环短代码数组,并在那里调用add_shortcode 多次。这需要设置您的选项数组,以便在数组的每个索引中定义一个短代码标记。我个人会将短代码标记作为数组的键,并且短代码 imo 的所有属性都将成为该数组的数组。

    希望这可以帮助您开始做这件事。

    【讨论】:

    • 为什么不能只使用 processAjax() 方法中的 add_shortcode() 调用?我知道它可以在构造函数中工作,但我希望能够即时添加短代码......另外,加载 function.php 中所有短代码的 wp_init 钩子不会仅在初始化时运行吗?这个想法是用户
    • add_shortcode AFAIK 在内容初始化期间被加载。我不认为你可以将它添加到任何你想要的地方并期望它能够工作。我所看到的任何地方都在 functions.php 文件中使用它来自动加载所需的短代码,以便在全球范围内使用它。将add_shortcode 放入ajax 函数不会全局添加短代码供the_content 使用。
    • 从技术上讲,您甚至不需要将其放入 wp_init 挂钩中。应该可以直接把它放在functions.php 或plugins php 文件中。检查该选项是否存在,并根据该选项执行任何操作。
    猜你喜欢
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多