我正在尝试写一个插件。我已经使用插件成功地在注册表中添加了一个额外字段。我想检查额外字段中的值是否与任何已注册的用户名匹配。
当我尝试使用预定义的usermeta函数进行验证时。我发现以下错误:
require( \'C:\\wamp\\www\\cpa\\wp-load.php\' )
require_once( \'C:\\wamp\\www\\cpa\\wp-config.php\' )
require_once( \'C:\\wamp\\www\\cpa\\wp-settings.php\' )
我可以在主题模板中完成这项工作。但我想知道如何像在主题文件中一样,在插件中访问WordPress的所有预定义功能。
代码:
//1. Add a new form element...
$referral_username = $_REQUEST[\'referral\'];
add_action(\'register_form\',\'myplugin_register_form\');
function myplugin_register_form (){
$referral_username = ( isset( $_POST[\'referral_username\'] ) ) ? $_POST[\'referral_username\']: \'\';
?>
<p>
<label for="referral_username"><?php _e(\'Referral Username\',\'mydomain\') ?><br />
<input type="text" name="referral_username" id="referral_username" class="input" size="20"value="<?php echo $referral_username = $_REQUEST[\'referral\']; ?>" size="25" />
</label>
</p>
<?php
}
//2. Add validation. In this case, we make sure referral_username is required.
add_filter(\'registration_errors\', \'myplugin_registration_errors\', 10, 3);
function myplugin_registration_errors ($errors, $sanitized_user_login, $user_email) {
if ( empty( $_POST[\'referral_username\'] ) )
$errors->add( \'referral_username_error\', __(\'<strong>ERROR</strong>: You must include a Valid Referral User Name. Else leave it blank.\',\'mydomain\') );
return $errors;
}
//3. Finally, save our extra registration user meta.
add_action(\'user_register\', \'myplugin_user_register\');
function myplugin_user_register ($user_id) {
if ( isset( $_POST[\'referral_username\'] ) )
update_user_meta($user_id, \'referral_username\', $_POST[\'referral_username\']);
}
//Test Usermeta
$user = get_userdatabylogin(\'vijay\');
echo $user->ID; // prints the id of the user;
SO网友:Charles Clarkson
请看最后两行代码。我正在尝试打印用户的id。它可以在主题文件中使用,但不能在插件中使用。
//Test Usermeta
$user = get_userdatabylogin(\'vijay\');
echo $user->ID; // prints the id of the user;
在PHP中,在定义用户函数之前(通常)无法执行它。
插件正在执行get_userdatabylogin()
前编码get_userdatabylogin()
已定义为函数。
主题正在执行get_userdatabylogin()
代码后get_userdatabylogin()
已定义为函数。
请咨询Plugin API (或aWP Hooks database 或搜索WordPress代码)以找到正确的操作名称。既然您已经知道代码在主题中起作用,那么您应该能够使用after_setup_theme
运行代码的操作。
add_action( \'after_setup_theme\', \'test_user_meta\' );
/**
* Test User meta.
*/
function test_user_meta() {
$user = get_userdatabylogin(\'vijay\');
echo $user->ID; // prints the id of the user;
}