gpt4 book ai didi

php - WP 编辑器 - wp_editor() 在 ajax 调用上未正确显示

转载 作者:行者123 更新时间:2023-12-03 22:15:36 27 4
gpt4 key购买 nike

我正在创建一个 WordPress 插件。它具有通过 AJAX 添加产品时显示编辑器的功能,但编辑器未正确显示。

用户可以添加任意数量的产品,因此请记住,会有多个 wp_editor()

请参阅随附的屏幕截图:

enter image description here

我使用了以下代码:

PHP

public function add_product() {

// Get product id
$prod_id = filter_input(INPUT_POST, 'pid');

// WordPress WYSIWYG Editor
wp_editor("Test Content", "textarea" . $prod_id, array('textarea_name' => 'text'));
wp_die();
}

JQUERY

$('.add-prod').live('click', function () {

var prod_id = $('.prod-id').val();
var data = {
action: 'add_prod',
pid: prod_id
};
$('#update-msg').show();

$.post(ajaxurl, data, function (result) {
$('#the-list').append(result);
$('#update-msg').hide();
});

return false;
});

我使用了互联网上的解决方案,但它部分工作不完全。使用以下代码:

PHP

wp_editor($product->prod_desc, $textarea_id, array('textarea_name' => 'text'));
\_WP_Editors::enqueue_scripts();
print_footer_scripts();
\_WP_Editors::editor_js();

JQUERY

var eid = '#item-list';
switchEditors.go(eid, 'tmce')
quicktags({id: eid});
//init tinymce
tinyMCEPreInit.mceInit[eid]['elements'] = eid;
tinyMCEPreInit.mceInit[eid]['body_class'] = eid;
tinyMCEPreInit.mceInit[eid]['succesful'] = false;
tinymce.init(tinyMCEPreInit.mceInit[eid]);

上面的代码执行以下操作:

enter image description here

最佳答案

显然,当您进行ajax调用时,wp_editor不会显示,它只返回ajax响应,而不是由该页面上的javascript构建的wp编辑器。简而言之,ajax 调用可以获得服务器端文本响应,但不能获得构建在客户端的 javascript 编辑器,需要 javascript 处理器来处理。

以下是如何使编辑器正常工作的 suedo 示例。

  1. 在“添加产品”按钮下方,从进行 ajax 调用的地方,使用 php 代码打印编辑器并将其显示设置为无,以便编辑器不会出现在页面上。

例如

<div class="wp-editor-wrapper" style="display: none;">
<?php wp_editor("Test Content", "textarea" . $prod_id, array('textarea_name' => 'text')); ?>
</div>
  • ajax 响应的 php 函数应该只返回文本内容。不是编辑器本身,它应该看起来像这样。

    公共(public)函数add_product() {

        // Get product id
    $prod_id = filter_input(INPUT_POST, 'pid');

    // if $prod_id is used here, use it to get content
    echo "Test Content";
    wp_die();

    }

  • 当收到文本内容的响应时,使用 jQuery,创建“wp-editor-wrapper”div 的克隆并将其添加到 textarea 的位置,并通过 ajax 响应设置其内容。

  • 关于php - WP 编辑器 - wp_editor() 在 ajax 调用上未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34128052/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com