我在这里自定义了注册表,但这个钩子执行了两次。
add_action( 'register_form', array( &$this, 'customize_registration_form' ) );
public function customize_registration_form(){
$first_name = ( ! empty( $_POST['first_name'] ) ) ? trim( $_POST['first_name'] ) : '';
$last_name = ( ! empty( $_POST['last_name'] ) ) ? trim( $_POST['last_name'] ) : '';
?>
<p>
<label for="first_name"><?php _e( 'First Name', $this->textdomain ) ?><br />
<input type="text" name="first_name" id="first_name" class="input" value="<?php echo esc_attr( wp_unslash( $first_name ) ); ?>" size="25" /></label>
</p>
<p>
<label for="last_name"><?php _e( 'Last Name', $this->textdomain ) ?><br />
<input type="text" name="last_name" id="last_name" class="input" value="<?php echo esc_attr( wp_unslash( $last_name ) ); ?>" size="25" /></label>
</p>
<?php
}
我两次得到相同的表单区域。如何解决此问题?
代码似乎很好,我建议检查并确保您的类在运行时仅实例化一次。
尝试在register_form
钩子上列出所有回调(有关方法,请参阅此 SO 答案(。您的方法有可能被钩住两次,从而复制标记。如果是这种情况,请考虑使用依赖注入容器来避免此类问题(以及许多其他 + 其他好处(。