WordPress插件快捷码中的操作挂钩

时间:2017-03-10 作者:zzMzz

我正在开发一个Wordpress插件,使用我的短代码中的操作获取$\\u帖子数据时遇到问题。我正在解析的表单位于我添加了短代码的页面上。

以下是我得到的:

function wpd_post_parse() {

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

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

$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) . "\\r\\n";

    $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\' . "\\r\\n";

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

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

}

function mgc_init(){

   $htmlStr = \'Hello World!\' . "\\r\\n";

   $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: 谢谢你迄今为止的帮助。我试图在表单提交中获取$\\u POST值(名字),但该值不在$\\u POST[“first\\u name”]内。打印到文件中的所有内容都是“wp hook:first name:”下面是代码的外观:

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

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

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

  $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) . "\\r\\n";

    $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\' . "\\r\\n";

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

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

//exit;
}

function mgc_init(){


  $htmlStr = \'Hello World!\' . "\\r\\n";

  $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] page in Wordpress 

add_action( \'parse_request\', \'wpd_post_parse\' );

1 个回复
最合适的回答,由SO网友:Milo 整理而成

目前还不完全清楚您的最终目标是什么,但捕获表单提交的一个简单方法是挂钩init 并检查是否已设置:

function wpd_check_post_vars(){
    if( isset( $_POST[\'first_name\'] ) ){
        // do something
    }
}
add_action( \'init\', \'wpd_check_post_vars\' );
这里的操作和您的短代码之间没有联系,这不是真正必要的。需要记住的一点是,操作不会持续到添加到请求之后。如果你add_action 在其相应的do_action 被触发时,不会发生任何事情。

您可能还应该使用比first_name.

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请