它显示了我想要实现的内容,完全替换了一个从php页面构建的html。
这是在绿色方块中创建表单和按钮的代码( functions.php ):
function insert_custom_form_start (){
//echo '
?>
<p class="form-row form-row-wide">
<input type="text" class="input-text" name="sensei_reg_username" placeholder="<?php _e( "gebruikersnaam", "woothemes-sensei" ); ?>" id="sensei_reg_username" value="<?php if ( ! empty( $_POST["sensei_reg_username"] ) ) echo esc_attr( $_POST["sensei_reg_username"] ); ?>" />
</p>
<p class="form-row form-row-wide">
<input type="email" class="input-text" name="sensei_reg_email" placeholder="<?php _e( "Email adres", "woothemes-sensei" ); ?>" id="sensei_reg_email" value="<?php if ( ! empty( $_POST["sensei_reg_email"] ) ) echo esc_attr( $_POST["sensei_reg_email"] ); ?>" />
</p>
<p class="form-row form-row-wide">
<input type="password" class="input-text" name="sensei_reg_password" placeholder="<?php _e( "wachtwoord", "woothemes-sensei" ); ?>" id="sensei_reg_password" value="<?php if ( ! empty( $_POST["sensei_reg_password"] ) ) echo esc_attr( $_POST["sensei_reg_password"] ); ?>" />
</p>
<!-- Spam Trap -->
<div style="left:-999em; position:absolute;"><label for="trap"><?php _e( "Anti-spam", "woothemes-sensei" ); ?></label><input type="text" name="email_2" id="trap" tabindex="-1" /></div>
<?php
//';
}
function insert_custom_form_end (){
echo'</div> <!-- end #main -->';
echo'</div> <!-- end #primary -->';
}
add_action('register_form','insert_custom_form_start', 10);
add_action('sensei_register_form_end','insert_custom_form_end', 10);
在这篇文章中我尝试删除旧表单,所以现在只显示新表单( functions.php ):
add_action('sensei_register_form_start','removeOldRegisterForm', 10);
function removeOldRegisterForm(){
echo '<h3>remove old register form and button</h3>';
remove_action( 'sensei_after_main_content','sensei_register_form_start', 10 );
remove_action( 'sensei_after_main_content','sensei_register_form_end', 10 );
//remove_option( 'users_can_register'); //removes all forms instead of just the first one
}
不幸的是,我似乎无法让删除操作工作,也许我不完全理解添加和删除钩子的工作原理。
人们已经建议我创建一个单独的登录页面,然后将其重定向到我的课程&#39;页面(如果用户已登录,则不会显示登录/注册表单)。但我认为这有点多余,我只想用更好看的形式替换它,而不是通过各种解决方法使网站效率低下。
如果我应该提供额外信息,请告诉我!
ps:来自&#39; class-sensei-frontend.php&#39;的代码我试图摆弄如下:
if ( get_option('users_can_register') ) {
// get current url
$action_url = get_permalink();
?>
<div class="col-2">
<h2><?php _e( 'Register', 'woothemes-sensei' ); ?></h2>
<form method="post" class="register" action="<?php echo esc_url( $action_url ); ?>" >
<?php do_action( 'sensei_register_form_start' ); ?>
<p class="form-row form-row-wide">
<label for="sensei_reg_username"><?php _e( 'Username', 'woothemes-sensei' ); ?> <span class="required">*</span></label>
<input type="text" class="input-text" name="sensei_reg_username" id="sensei_reg_username" value="<?php if ( ! empty( $_POST['sensei_reg_username'] ) ) echo esc_attr( $_POST['sensei_reg_username'] ); ?>" />
</p>
<p class="form-row form-row-wide">
<label for="sensei_reg_email"><?php _e( 'Email address', 'woothemes-sensei' ); ?> <span class="required">*</span></label>
<input type="email" class="input-text" name="sensei_reg_email" id="sensei_reg_email" value="<?php if ( ! empty( $_POST['sensei_reg_email'] ) ) echo esc_attr( $_POST['sensei_reg_email'] ); ?>" />
</p>
<p class="form-row form-row-wide">
<label for="sensei_reg_password"><?php _e( 'Password', 'woothemes-sensei' ); ?> <span class="required">*</span></label>
<input type="password" class="input-text" name="sensei_reg_password" id="sensei_reg_password" value="<?php if ( ! empty( $_POST['sensei_reg_password'] ) ) echo esc_attr( $_POST['sensei_reg_password'] ); ?>" />
</p>
<!-- Spam Trap -->
<div style="left:-999em; position:absolute;"><label for="trap"><?php _e( 'Anti-spam', 'woothemes-sensei' ); ?></label><input type="text" name="email_2" id="trap" tabindex="-1" /></div>
<?php do_action( 'sensei_register_form_fields' ); ?>
<?php do_action( 'register_form' ); ?>
<p class="form-row">
<input type="submit" class="button" name="register" value="<?php _e( 'Register', 'woothemes-sensei' ); ?>" />
</p>
<?php do_action( 'sensei_register_form_end' ); ?>
</form>
</div>
<?php
}
?>
</div>
</div>
登录表单功能:
public function sensei_login_form() {
?>
<div id="my-courses">
<?php Sensei()->notices->mayb
e_print_notices(); ?>
<div class="col2-set" id="customer_login">
<div class="col-1">
<?php
// output the actual form markup
Sensei_Templates::get_template( 'user/login-form.php');
?>
</div>
<?php
if ( get_option('users_can_register') ) {
// get current url
$action_url = get_permalink();
?>
<div class="col-2">
<h2><?php _e( 'Register', 'woothemes-sensei' ); ?></h2>
<form method="post" class="register" action="<?php echo esc_url( $action_url ); ?>" >
<?php do_action( 'sensei_register_form_start' ); ?>
<p class="form-row form-row-wide">
<label for="sensei_reg_username"><?php _e( 'Username', 'woothemes-sensei' ); ?> <span class="required">*</span></label>
<input type="text" class="input-text" name="sensei_reg_username" id="sensei_reg_username" value="<?php if ( ! empty( $_POST['sensei_reg_username'] ) ) echo esc_attr( $_POST['sensei_reg_username'] ); ?>" />
</p>
<p class="form-row form-row-wide">
<label for="sensei_reg_email"><?php _e( 'Email address', 'woothemes-sensei' ); ?> <span class="required">*</span></label>
<input type="email" class="input-text" name="sensei_reg_email" id="sensei_reg_email" value="<?php if ( ! empty( $_POST['sensei_reg_email'] ) ) echo esc_attr( $_POST['sensei_reg_email'] ); ?>" />
</p>
<p class="form-row form-row-wide">
<label for="sensei_reg_password"><?php _e( 'Password', 'woothemes-sensei' ); ?> <span class="required">*</span></label>
<input type="password" class="input-text" name="sensei_reg_password" id="sensei_reg_password" value="<?php if ( ! empty( $_POST['sensei_reg_password'] ) ) echo esc_attr( $_POST['sensei_reg_password'] ); ?>" />
</p>
<!-- Spam Trap -->
<div style="left:-999em; position:absolute;"><label for="trap"><?php _e( 'Anti-spam', 'woothemes-sensei' ); ?></label><input type="text" name="email_2" id="trap" tabindex="-1" /></div>
<?php do_action( 'sensei_register_form_fields' ); ?>
<?php do_action( 'register_form' ); ?>
<p class="form-row">
<input type="submit" class="button" name="register" value="<?php _e( 'Register', 'woothemes-sensei' ); ?>" />
</p>
<?php do_action( 'sensei_register_form_end' ); ?>
</form>
</div>
<?php
}
答案 0 :(得分:0)
在我看到更多代码以及您想要完成的任务后,您应该如何完成此更改。可能有一个钩子供您使用(我知道Woocommerce很好,但不是Sensei),但另一种(或唯一/最佳)方法是在您的主题中创建一个名为sensei
的文件夹,在其中创建一个名为user
的文件夹,然后在其中放置一个名为login-form.php
的文件。所以你的主题目录看起来像这样:
functions.php
sensei/
user/
login-form.php
style.css
在login-form.php
中,输入您想要的任何表单代码。这将覆盖wp-content/plugins/sensei/templates/user/login-form.php
中的默认Sensei模板。从技术上讲,您应该将login-form.php
文件复制到主题的sensei/user/login-form.php
文件中,然后替换表单代码。这样,您可以维护该文件中的所有其他挂钩。
请注意,插件结构包含sensei/templates/user/login-form.php
,但您的结构不包含模板文件夹。
旁注:此方法适用于插件模板文件夹中的所有其他文件。事实上,这正是它所针对的 - 所以你可以使用钩子,过滤器和原始模板文件的组合来完全自定义它。