你好我还习惯在wordpress中使用动作。我只是想知道我想要的是什么。
我想在不触及代码的情况下删除生成下面某些表单的echo
。我看到他们之前和之后都有一个do_action
。但是我想知道他们对我做我想做的事情有什么用处,如果是这样的话怎么去影响do_action
之间的内容。
例如,只是说我想删除
echo "
<p>
<label for='log'>".__( 'Username', 'jigoshop' )."</label>
<input type='text' name='log' id='log' class='input-text username' />
</p>
";
...从
do_action( 'jigoshop_widget_login_before_form' );
// Get redirect URI
$redirect_to = apply_filters( 'jigoshop_widget_login_redirect', get_permalink( jigoshop_get_page_id('myaccount') ) );
$user_login = isset( $user_login ) ? $user_login : null;
echo "<form action='".esc_url(wp_login_url( $redirect_to ))."' method='post' class='jigoshop_login_widget'>";
// Username
echo "
<p>
<label for='log'>".__( 'Username', 'jigoshop' )."</label>
<input type='text' name='log' id='log' class='input-text username' />
</p>
";
// Password
echo "
<p>
<label for='pwd'>".__( 'Password', 'jigoshop' )."</label>
<input type='password' name='pwd' id='pwd' class='input-text password' />
</p>
";
echo "
<p>
<input type='submit' name='submit' value='".__( 'Login', 'jigoshop' )."' class='input-submit' />
<a class='forgot' href='".esc_url(wp_lostpassword_url( $redirect_to ))."'>".__( 'Forgot it?', 'jigoshop' )."</a>
</p>
";
if (Jigoshop_Base::get_options()->get_option( 'jigoshop_enable_signup_form' ) == 'yes' ) {
echo '<p class="register">';
wp_register(__('New user?','jigoshop') . ' ' , '');
echo '</p>';
}
echo "</form>";
do_action( 'jigoshop_widget_login_after_form' );
$links = apply_filters( 'jigoshop_widget_login_user_links', array() );
答案 0 :(得分:0)
不幸的是,在使用do_action()
或remove_action()
的情况下,没有真正“干净”的方法来实现这一目标。 do_action()
函数完全像它听起来那样;它标志着某个特定动作发生的特定点,然后您可以将不同的函数挂钩/取消挂钩。您可以在表单之前和之后运行函数,但是没有任何操作在里面表单中运行,这限制了您的选项。
对您来说实际上更有用的是filter,因为这会让您实际影响对变量/内容的更改。唉,看起来在回应那些特定的字段之前没有应用过滤器,所以你再次运气不好。
在我看来,您唯一可行的选择是使用CSS / JS隐藏字段,或者分割窗口小部件的副本并根据需要进行更改:将user_login.php
文件复制到插件文件夹,重命名类名,因此它不会与现有类冲突。然后注册并加载小部件:
class My_Custom_Widget_User_Login extends WP_Widget
{
/**
* Constructor
* Setup the widget with the available options
* Add actions to clear the cache whenever a post is saved|deleted or a theme is switched
*/
public function __construct()
{
$options = array(
'classname' => 'widget_user_login',
'description' => __('Displays a handy login form for users', 'jigoshop')
);
// Ensure you also change the base ID of you widget
parent::__construct('custom-user-login', __('Jigoshop: Login', 'jigoshop'), $options);
}
// Rest of class definition here; edit as you wish
} // End class
// Register and load the widget
function my_load_widget() {
register_widget( 'custom-user-login' );
}
add_action( 'widgets_init', 'my_load_widget' );
这应该会为您提供一个可以随意调整的小部件副本,与Jigoshop插件的其余部分分开,因此它不会直接受到更新的影响。我没有机会测试它,但希望它能让你走上正轨。