为了账号安全,请及时绑定邮箱和手机立即绑定

提交后从方法刷新当前页面

提交后从方法刷新当前页面

PHP
胡子哥哥 2021-05-05 10:19:32
好的,我是新来的PHP写作者,但我被卡住了。我有以下代码:    add_shortcode( 'mycred_take', 'mycred_pro_render_take_shortcode' );function mycred_pro_render_take_shortcode( $atts, $label = 'Give Away' ) {    extract( shortcode_atts( array(        'user_id' => '',        'confirm' => '',        'amount'  => '',        'unique'  => 0,        'ref'     => 'mycred_take',        'entry'   => '%plural% lose',        'ctype'   => 'mycred_default'    ), $atts ) );    if ( ! is_user_logged_in() || ! function_exists( 'mycred' ) ) return '';    if ( $user_id == '' )        $user_id = get_current_user_id();    // Load essentials    $user_id = absint( $user_id );    $mycred = mycred( $ctype );    // User is excluded = has no balance    if ( $mycred->exclude_user( $user_id ) ) return '';    // Unique check    if ( $unique == 1 && $mycred->has_entry( $ref, 0, $user_id, '', $ctype ) ) return '';    $balance = $mycred->get_users_balance( $user_id, $ctype );    $output = '';    // If button was pushed    if ( isset( $_POST['mycred-take-points-token'] ) && wp_verify_nonce( $_POST['mycred-take-points-token'], 'mycred-deduct-points' . $ref . $ctype ) ) {        // Deduct        $mycred->add_creds(            $ref,            $user_id,            0 - $amount,            $entry        );        // Update balance        $balance = $balance - $amount;    }    // Too low balance    if ( $balance < $amount ) return '';    return $output . '<form action=""  method="post" id="mycred-take-shortcode' . $ref . $ctype . '"><input type="hidden" name="mycred-take-points-token" value="' . wp_create_nonce( 'mycred-deduct-points' . $ref . $ctype ) . '" /><input type="submit"  class="button"  value="' . $label . '" /></form>';}这是一个Wordpress简码。我想要在表单提交和数据库更新后刷新页面。由于此代码当前关闭且页面未更新(如果我手动刷新页面,则数据库已更新,并且会显示更改)。我尝试了onSubmit =“ window.location.reload()”,action =“”代码,但没有用。
查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

请尝试用下面的代码替换您的代码。


add_action("init","start_ob_start_cb");

function start_ob_start_cb()

{

     ob_start();

}


add_shortcode( 'mycred_take', 'mycred_pro_render_take_shortcode' );

function mycred_pro_render_take_shortcode( $atts, $label = 'Give Away' ) {


    extract( shortcode_atts( array(

        'user_id' => '',

        'confirm' => '',

        'amount'  => '',

        'unique'  => 0,

        'ref'     => 'mycred_take',

        'entry'   => '%plural% lose',

        'ctype'   => 'mycred_default'

    ), $atts ) );


    if ( ! is_user_logged_in() || ! function_exists( 'mycred' ) ) return '';


    if ( $user_id == '' )

        $user_id = get_current_user_id();


    // Load essentials

    $user_id = absint( $user_id );

    $mycred = mycred( $ctype );


    // User is excluded = has no balance

    if ( $mycred->exclude_user( $user_id ) ) return '';


    // Unique check

    if ( $unique == 1 && $mycred->has_entry( $ref, 0, $user_id, '', $ctype ) ) return '';


    $balance = $mycred->get_users_balance( $user_id, $ctype );


    $output = '';


    // If button was pushed

    if ( isset( $_POST['mycred-take-points-token'] ) && wp_verify_nonce( $_POST['mycred-take-points-token'], 'mycred-deduct-points' . $ref . $ctype ) ) {


        // Deduct

        $mycred->add_creds(

            $ref,

            $user_id,

            0 - $amount,

            $entry

        );


        // Update balance

        $balance = $balance - $amount;

wp_redirect(get_permalink()); die();

    }


    // Too low balance

    if ( $balance < $amount ) return '';


    return $output . '<form action=""  method="post" id="mycred-take-shortcode' . $ref . $ctype . '"><input type="hidden" name="mycred-take-points-token" value="' . wp_create_nonce( 'mycred-deduct-points' . $ref . $ctype ) . '" /><input type="submit"  class="button"  value="' . $label . '" /></form>';

}


查看完整回答
反对 回复 2021-05-28
  • 2 回答
  • 0 关注
  • 259 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信