Php 在wordpress中删除带有添加动作的代码?
嗨,我仍然习惯在wordpress中使用动作。我只是想知道我想要的是什么 我想删除正在生成以下某些表单的Php 在wordpress中删除带有添加动作的代码?,php,wordpress,jigoshop,Php,Wordpress,Jigoshop,嗨,我仍然习惯在wordpress中使用动作。我只是想知道我想要的是什么 我想删除正在生成以下某些表单的echos,而不接触代码。我看到在他们之前和之后都有一个do_action。但是我想知道它们对我做我想做的事情有什么用处吗?如果是的话,如何影响do\u actions之间的内容 例如,只要说我想删除 echo " <p> <label for='log'>".__( 'Username', 'jigosh
echo
s,而不接触代码。我看到在他们之前和之后都有一个do_action
。但是我想知道它们对我做我想做的事情有什么用处吗?如果是的话,如何影响do\u action
s之间的内容
例如,只要说我想删除
echo "
<p>
<label for='log'>".__( 'Username', 'jigoshop' )."</label>
<input type='text' name='log' id='log' class='input-text username' />
</p>
";
echo”
“.”('Username','jigoshop')
";
从
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() );
do_action('jigoshop_widget_login_before_form');
//获取重定向URI
$redirect_to=应用过滤器('jigoshop_widget_login_redirect',get_permalink(jigoshop_get_page_id('myaccount'));
$user\u login=isset($user\u login)$用户登录:空;
回声“;
//用户名
回声“
“.”('Username','jigoshop')
";
//密码
回声“
“.”('Password','jigoshop')
";
回声“
";
if(Jigoshop_Base::get_options()->get_option('Jigoshop_enable_signup_form')=='yes'){
echo';
wp_寄存器(uuu('New user?','jigoshop'),'';
回声“
”;
}
回声“;
do_操作(“jigoshop_widget_login_后的表单”);
$links=apply_filters('jigoshop_widget_login_user_links',array());
不幸的是,在上述场景中,使用do\u action()
或remove\u action()
没有真正的“干净”方法来实现这一点。do\u action()
函数的作用与它听起来的完全一样;它标记某个特定操作发生的特定点,然后可以将不同的函数挂接/取消挂接到该点。您可以在窗体之前和之后运行函数,但窗体内部没有运行任何操作,这限制了您的选项
实际上对您更有用的是a,因为这会让您实际影响对变量/内容的更改。唉,看起来在回显这些特定字段之前没有应用任何过滤器,所以你又一次走运了
在我看来,您唯一实用的选择是使用CSS/JS隐藏字段,或者复制小部件的副本并根据需要进行更改:将user\u login.php
文件复制到您的plugins文件夹,重命名类名,使其不与现有类冲突。然后注册并加载小部件:
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插件的其余部分分开,这样它就不会受到更新的直接影响。我还没有机会测试它,但希望它能让您走上正轨。为什么不从表单模板中删除不需要的部分呢?2个原因,我想练习使用钩子、过滤器和操作,但也因为如果有插件更新,我希望我的客户端能够继续进行。我决定使用
do_actions
用隐藏的div
隐藏第一个表单,然后构建我自己的表单。啊,好的,你可以在functions.php中添加一个函数来匹配并删除你不想要的字符串,但即使这样,您也需要一个编写良好的正则表达式来删除它,或者需要一个文字比较。第一个需要一点工作,除非你已经擅长正则表达式,第二个仍然可以在插件更新时中断,比如说如果开发人员从代码中删除了一些换行符。