首页 > 解决方案 > 如何修复 Wordpress 数据库中 PHP 数据中的缓存问题

问题描述

我尝试使用下面的代码进行插件开发,但存在缓存问题(我认为)。请在下方了解详情。

问题

我创建了一个过滤器来接受自定义的 url,我正在查询数据库,但结果值似乎在浏览器中没有改变,但在数据库中发生了改变。所以基本上传递的数据不会从数据库返回更新的值。

代码

add_action( 'init',  function() {
    add_rewrite_rule('coupon/([a-zA-Z0-9]+)[/]?$', 'index.php?coupon=$matches[1]', 'top');
});

add_filter('query_vars', function( $query_vars ) {
    $query_vars[] = 'coupon';
    return $query_vars;
});

add_action( 'template_include', function( $template ) {
    if ( get_query_var( 'coupon' ) == false || get_query_var( 'coupon' ) == '' ) {
        return $template;
    }

    ob_clean();
    ob_start();

    // Check if coupon exists
    global $wpdb;
    $coupon = get_query_var('coupon');

    $coupon_query = $wpdb->prepare('SELECT * FROM wp_urls WHERE coupon = %s AND claimed_at IS NULL', $coupon);
    $coupon_available = $wpdb->query($coupon_query) ? true : false;

    if(!$coupon_available) {
        header('Location: /'); // Redirect to landing page
        exit();
    }
    
    return plugin_dir_path(__FILE__) . 'views/client/index.php';;
} );

预期结果

header('Location: /');如果优惠券不可用,预期结果应将用户重定向到。

任何想法?

标签: phpwordpress

解决方案


您需要更新 WordPress 管理区域中的永久链接。例如:

Step 1: In the WordPress admin area, go to `Settings > Permalinks`
Step 2: Click `Save Changes`
Step 3: Permalinks and rewrite rules are flushed.

推荐阅读