php WordPress插件和JSON不是一个有效的响应错误

brqmpdu1  于 2024-01-05  发布在  PHP
关注(0)|答案(1)|浏览(150)

我正在开发一个简单的插件,它可以检查用户是否点击按钮并在WordPress中设置cookie。一切正常,但当我尝试更新帖子或页面时,我会得到“更新失败。响应不是有效的JSON响应。”我无法弄清楚如何解决这个问题。此外,我问我是否正在做正确的过程来挂钩翻译并在Worpress init中显示对话框。

if(!defined('ABSPATH')) {
    exit;
}

// ACTION
add_action('wp_enqueue_scripts', 'cp_scripts');

function cp_scripts() {
    wp_enqueue_style('cookie-style', plugins_url('style.css', __FILE__));
    wp_enqueue_script('cookie-script', plugins_url('script.js', __FILE__));
}   

add_action('init', 'my_plugin_show_confirm');
// add_action('init', 'register_pll_translation');
 
function register_pll_translation() {
    if(function_exists('pll_register_string')) {
        pll_register_string( 'cp_form_subtitle', "string", 'cp-form', false );
        pll_register_string( 'cp_form_age_ok', "string", 'cp-form', false );
    }
}

function my_plugin_show_confirm() {
    if (!isset($_COOKIE['cp_enter']) && !is_admin() )  {
    $current_url = get_the_permalink();

    if(isset($_POST['submit'])) {
        setcookie('cp_enter', 1 , time() + (60 * 60 * 24 * 30), COOKIEPATH, COOKIE_DOMAIN);
        return;
    } ?>
   
    <div id="my-plugin-confirm">
        <form action="<?php echo $current_url ?>" method="post">
             <h2><?php echo esc_html(get_bloginfo('name'));?></h2>
             <p><Click to enter</p>
            <button type="submit" name="submit">Enter</button>
        </form>
    </div>

    <?php } ?>

字符串

rta7y2nd

rta7y2nd1#

我添加了一个新的函数my_plugin_set_cookie(),它被挂接到init。这个函数检查表单是否已经提交并设置cookie。设置cookie后,它会将用户重定向到同一页面,以避免在用户刷新表单时重新发送表单。my_plugin_show_confirm()函数现在只负责输出表单。

add_action('init', 'my_plugin_set_cookie');
add_action('wp_footer', 'my_plugin_show_confirm');

function my_plugin_set_cookie() {
    if (!isset($_COOKIE['cp_enter']) && !is_admin() && isset($_POST['submit'])) {
        setcookie('cp_enter', 1 , time() + (60 * 60 * 24 * 30), COOKIEPATH, COOKIE_DOMAIN);
        wp_redirect($_SERVER['REQUEST_URI']); // Redirect to the same page to avoid resending the form on refresh
        exit;
    }
}

function my_plugin_show_confirm() {
    if (!isset($_COOKIE['cp_enter']) && !is_admin() )  {
        $current_url = get_the_permalink(); ?>

        <div id="my-plugin-confirm">
            <form action="<?php echo $current_url ?>" method="post">
                <h2><?php echo esc_html(get_bloginfo('name'));?></h2>
                <p>Click to enter</p>
                <button type="submit" name="submit">Enter</button>
            </form>
        </div>

    <?php }
}

字符串

相关问题