WP Ajax удаляет короткие коды из сообщения в режиме без аутентификации

#php #wordpress #wordpress-theming #wordpress-rest-api

#php #wordpress #wordpress-тематизация #wordpress-rest-api

Вопрос:

У меня странная проблема с пользовательской темой WordPress.

Я включил действия AJAX в своей теме следующим образом:

 add_action('wp_ajax_get_levelOne_Content', 'get_levelOne_Content');
add_action('wp_ajax_nopriv_get_levelOne_Content', 'get_levelOne_Content');
  

get_levelOneContent не делает ничего особенного. Скорее всего, он просто извлекает содержимое публикации и возвращает вывод HTML в качестве полезной нагрузки AJAX.

 function get_levelOne_Content()
{   
    $postid = $_POST["postid"];
    
    require(get_template_directory() .'/../../../wp-load.php');
    @header('Content-Type: text/html; charset=' . get_option('blog_charset'));
    @header('X-Robots-Tag: noindex');
    send_nosniff_header();
    nocache_headers();
    
    $post_content = get_post($postid);
    print_r($post_content);
    $content = $post_content->post_content;
    $title = $post_content->post_title;
    $currentLang = apply_filters('wpml_current_language', null);    
    ?>
<div class="wrapper__content fw fx fx__row">
    <div class="post__content fx fx__col p__4">

        <h2 class="txt0-t"><?php echo $title; ?></h2>
        <div class="m__t-2">
            <?php echo apply_filters('the_content', $content);?>
        </div>
    </div>
</div>
<?php
exit();
} ?>
  

Сообщение, которое меня интересует, имеет тег шорткода WP Form. Этот код работает совершенно нормально, как и предполагалось, когда я вхожу в систему как пользователь на этом сайте.
Однако, поскольку пользователь не прошел проверку подлинности, шорткод не отображается в полезной нагрузке через метод get_post(). Я проверил это с print_r($post_content); помощью , которая не показывает ничего, связанного с шорткодом, присутствующим в исходном сообщении.

Я использовал свои известные навыки, чтобы устранить эту проблему, но я не могу этого сделать. Перед публикацией здесь я искал в Интернете и пробовал различные решения, но ни одно из предложенных решений не сработало.

Может кто-нибудь, пожалуйста, предложить мне что-нибудь?

Спасибо.

Комментарии:

1. Вы пробовали какой-либо другой короткий код, кроме WP Form?

2. привет ! да, я только что попробовал использовать тег embed, и он сработал так, как задумано. итак, проблема заключается в конфигурации WPForms?

3. Да, потому что вы уже используете правильные перехваты (один для входа в систему и один для использования без входа в систему). Возможно, ваши WP Forms настроены на отображение только для зарегистрированных пользователей. Вы можете попробовать использовать Contact Form 7 или Formidable Forms создать ту же форму.

4. спасибо за ссылку. Я также пробовал это раньше. Я также включил другие дополнения и поиграл с некоторыми настройками. Мне кажется, что я не могу встроить короткий код формы и просмотреть его анонимно. Таким образом, проблема вообще не связана с WP Rest API. Скорее всего, виновником является WPForms в целом. Я попробую несколько вещей сейчас, и я опубликую позже. Спасибо за ваш вклад.

5. Тогда удачи!