从WordPress unction.php文件中的挂钩预填充表单

时间:2013-05-10 作者:Tim Joyce

我有一个表单,只需在wp admin后端使用HTML编辑器创建页面即可。我在该页面的挂钩中有一些变量,我想用挂钩中的变量预先填充一些表单字段。

add_action(\'wp\', \'simple_form\');

function simple_form(){
    $firstname = \'Bob\';
    //Do something to populate the form field name <fname> with "Bob"
}

2 个回复
SO网友:s_ha_dum

您需要声明变量global 在使用它之前。

function simple_form(){
    global $firstname;
    $firstname = \'Bob\';
    //Do something to populate the form field name <fname> with "Bob"
}
您的表单应该能够。。。

global $firstname;
echo $firstname;
。。。使用变量。

然而,我忍不住认为有更好的方法可以做到这一点。

设置aglobal 如果你能做你正在做的事情,最好避免wp-- 每次加载页面时,都要为站点上的每个页面(包括前端和后端)填充这些变量。这是对资源的浪费。还有很多很多其他的钩子,我确信其中一个会比wp.edit 你的问题,我将编辑我的答案。

SO网友:Ralf912

如果我理解正确的话,您希望在前面的钩子/动作中预定义一些变量,并在后面的钩子/动作中使用这些变量。

add_action( \'wp\', \'predefine_my_vars\' );
function predefine_my_vars() {
  global $my_vars;
  $my_vars = array(
    \'name\' => \'Bob\',
  );
}

add_action( \'wp_footer\' \'show_my_vars\' );
function show_my_vars() {
  global $my_vars;
  if ( isset( $my_vars[\'name\'] ) )
    echo "Hello {$my_vars[\'name\']}!";
}
Theglobal 关键字是使另一个函数中的var可访问的一种方法。但这不是最好的方式。全局名称空间非常完整,WordPress使用了很多变量。您需要为您的VAR指定一个真正唯一的名称。

另一种方法是使用会话。会话通常不会使var全局可访问,但您可以为此“误用”它。

add_action( \'wp\', \'predefine_my_vars\' );
function predefine_my_vars() {
 // start a session if no one was started
 $session_id = session_id();
 if ( empty( $session_id ) )
   session_start();

  $my_vars = array(
    \'name\' => \'Bob\',
  );

  $_SESSION[\'my_vars\'] = serialize( $my_vars );
}

add_action( \'wp_footer\' \'show_my_vars\' );
function show_my_vars() {
  $session_id = session_id();
  // no session was started
  if ( empty( $session_id ) )
    return false;
  else
    $my_vars = ( isset( $_SESSION[\'my_vars\'] ) ) ? unserialize( $_SESSION[\'my_vars\'] ) : array();

  if( isset( $my_vras[\'name\'] ) )
    echo "Hello {$my_vars[\'name\']}!";
}

结束

相关推荐

如何在Contact Form 7-Forms中使用其他快捷码?

我注意到任何不是联系人表单7内置短代码一部分的短代码都不起作用。例如:我试图在contact form 7中的表单元素之间使用手风琴快捷码。但是代码不起作用。如何在不编辑联系人表单7核心文件的情况下解决此问题?