douwu7168 2017-03-10 16:38
浏览 48
已采纳

动作挂钩内部Wordpress插件短代码

I'm developing a Wordpress plugin and I'm having trouble getting $_POST data using an action inside my shortcode. The form I'm parsing is on a page that I've added my shortcode to.

Here's what I've got:

function wpd_post_parse() {

    $string = 'wp hook: ' . var_dump($_POST) . "
";

    //$string = 'wp hook: first name: ' . $_POST["first_name"] . "
";
    //$string .= 'wp hook: last name: ' . $_POST["last_name"] . "
";
    //$string .= 'wp hook: email: ' . $_POST["email"] . "
";

    $fileName = dirname(__FILE__) . '/log.txt';     

    file_put_contents($fileName, $string, FILE_APPEND | LOCK_EX);
    //file_put_contents($fileName, $string, FILE_APPEND);

    /*
    if (!empty($_POST)){

        $string = 'wp hook: ' . var_dump($_POST) . "
";

        $fileName = dirname(__FILE__) . '/log.txt';     

        file_put_contents($fileName, $string, FILE_APPEND | LOCK_EX);
        //file_put_contents($fileName, $string, FILE_APPEND);

    }else{

        $string = 'wp hook: POST empty' . "
";

        $fileName = dirname(__FILE__) . '/log.txt';     

        file_put_contents($fileName, $string, FILE_APPEND | LOCK_EX);
    }
    */

}

function mgc_init(){

    $htmlStr = 'Hello World!' . "
";

    $fileName = dirname(__FILE__) . '/log.txt';

    file_put_contents($fileName, $htmlStr, FILE_APPEND | LOCK_EX);
    //file_put_contents($fileName, $htmlStr, FILE_APPEND);  

    //Add hook to capture $_POST data
    add_action( 'parse_request', 'wpd_post_parse' );

}

add_shortcode('mgc','mgc_init'); //put this shortcode [mgc] on page in Wordpress 

UPDATE: Thanks for your help so far. I'm trying to get a $_POST value (first name) on form submit but the value isn't inside $_POST["first_name"]. All that gets printed to the file is "wp hook: first name: " Here's how the code looks now:

//Capture the $_POST data
function wpd_post_parse() {

    //$string = 'wp hook: ' . var_dump($_POST) . "
";

    $string = 'wp hook: first name: ' . $_POST["first_name"] . "
";
    //$string .= 'wp hook: last name: ' . $_POST["last_name"] . "
";
    //$string .= 'wp hook: email: ' . $_POST["email"] . "
";

    $fileName = dirname(__FILE__) . '/log.txt';     

    file_put_contents($fileName, $string, FILE_APPEND | LOCK_EX);
    //file_put_contents($fileName, $string, FILE_APPEND);

    /*
if (!empty($_POST)){

    $string = 'wp hook: ' . var_dump($_POST) . "
";

    $fileName = dirname(__FILE__) . '/log.txt';     

    file_put_contents($fileName, $string, FILE_APPEND | LOCK_EX);
    //file_put_contents($fileName, $string, FILE_APPEND);

}else{

    $string = 'wp hook: POST empty' . "
";

    $fileName = dirname(__FILE__) . '/log.txt';     

    file_put_contents($fileName, $string, FILE_APPEND | LOCK_EX);
}
*/

//exit;
}

function mgc_init(){

    $htmlStr = 'Hello World!' . "
";

    $fileName = dirname(__FILE__) . '/log.txt';

    file_put_contents($fileName, $htmlStr, FILE_APPEND | LOCK_EX);
    //file_put_contents($fileName, $htmlStr, FILE_APPEND);  

    do_action( 'wpd_post_parse' );

}

add_shortcode('mgc','mgc_init'); //put this shortcode [mgc] on thedinnerdaily.com/subscribe/ page in Wordpress 

add_action( 'parse_request', 'wpd_post_parse' );
  • 写回答

1条回答 默认 最新

  • doutang6819 2017-03-13 14:18
    关注

    This approach didn't work and it caused site-wide problems on Wordpress. I moved my code off of the registration page and onto the completed form's re-direct page. From there I was able to capture the form data I was looking for.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号