• Добрый день,

    подскажите как победить проблему — у меня есть на фронтЭнде сайта редактор и вывожу его через wp_editor(); и рядом поля заголовка и краткого описания поста.

    при нажатии на кнопку сохранить js-скрипт собирает данные из полей и аяксом отправляет в php-скрипт для сохранения в БД.
    Подбор значения текста поста из редактора вот так через функцию:

    function tmce_getContent(editor_id, textarea_id) {
        if ( typeof editor_id == 'undefined' ) editor_id = wpActiveEditor;
        if ( typeof textarea_id == 'undefined' ) textarea_id = editor_id;
    
        if ( jQuery('#wp-'+editor_id+'-wrap').hasClass('tmce-active') && tinyMCE.get(editor_id) ) {
            return tinyMCE.get(editor_id).getContent();
        }else{
            return jQuery('#'+textarea_id).val();
        }
    }

    Все как бы хорошо работает, до тех пор пока в тексте не встретится амперсанд (&) или плюс (+).

    Собственно проблема такая — при отправке текста из жаваскрипта — еще все ок, но в php прилетает уже укороченный текст, т.е. текст обрезается сразу после & амперсанда. Причем ерунда в том, что и преобразование & выглядит как & и чего токо не делал всеравно обрезает.

    Из админки же — сохраняется отлично. Пробовал отключать фильтры

    remove_filter('content_save_pre', 'wp_filter_post_kses');
            remove_filter('content_filtered_save_pre', 'wp_filter_post_kses');
            remove_filter('excerpt_save_pre', 'wp_filter_post_kses');

    Не помогает… Подскажите как сделать чтоб работало. И в чем проблема?

    Заранее спасибо

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Юрій

    (@yube)

    js-скрипт собирает данные из полей и аяксом отправляет в php-скрипт

    Покажите, как формируете аякс-запрос.

    $('#save_post').on('click', function () {
        var post_title = $('#ptitle').val(),
            post_text = tmce_getContent('ptext', 'ptext');
        ....
    
        $.ajax({
                    type: 'POST',
                    url: url,
                    dataType: "json",
                    data: "action=save_post&post_title=" + ptitle + "&post_text=" + ptext,
    
                    beforeSend: function (x) {
                        if (x && x.overrideMimeType) {
                            x.overrideMimeType("application/json;charset=UTF-8");
                        }
                    },
                    success: function (result) {
                        //console.log(result);
                        window.location.href = result;
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        console.log(arguments);
                    }
                });
    
    });
    Модератор Юрій

    (@yube)

    data: "action=save_post&post_title=" + ptitle + "&post_text=" + ptext,

    Сделайте так:

    data: {"action":"save_post", "post_title":ptitle, "post_text":ptext },

    Благодарю, Юрий!!! Победил — работает!

Просмотр 4 ответов — с 1 по 4 (всего 4)

Тема «Сохранение текста поста в БД» закрыта для новых ответов.