我对 WordPress 很陌生,我想在PointFinder主题的管理仪表板中添加一个自定义按钮。我知道动作钩子的概念,并且已经成功实现了我自己的动作钩子 with并从with中do_action_ref_array()
调用它。functions.php
add_action()
方法 1(将按钮定义静态放入 php 文件)
我要添加附加按钮的目标侧边栏小部件内置在“dashboard-page.php”文件中。这是代码的摘录:
$pfmenu_output .= ($setup11_reviewsystem_check == 1) ? '<li><a href="'.$setup4_membersettings_dashboard_link.$pfmenu_perout.'ua=reviews"><i class="pfadmicon-glyph-377"></i> '. $setup29_dashboard_contents_rev_page_menuname.'</a></li>' : '';
$pfmenu_output .= '<li><a href="http://my.testsite.com/market"><i class="pfadmicon-glyph-476"></i> '. esc_html__('Car Market','pointfindert2d').'</a></li>';
$pfmenu_output .= '<li><a href="'.esc_url(wp_logout_url( home_url() )).'"><i class="pfadmicon-glyph-476"></i> '. esc_html__('Logout','pointfindert2d').'</a></li>';
第二行是我的静态方法。该按钮已正确添加到侧边栏小部件。但是我需要将此代码放入functions.php
我的文件夹Child-Theme
中,以便在以后的更新过程中保留它。
方法 2(使用自定义动作挂钩更加动态)
我还尝试添加自己的动作挂钩,而不是静态添加按钮(将第二行替换为动作挂钩定义:
$pfmenu_output .= ($setup11_reviewsystem_check == 1) ? '<li><a href="'.$setup4_membersettings_dashboard_link.$pfmenu_perout.'ua=reviews"><i class="pfadmicon-glyph-377"></i> '. $setup29_dashboard_contents_rev_page_menuname.'</a></li>' : '';
do_action_ref_array( 'pf_add_widget_button', array(&$pfmenu_output) );
$pfmenu_output .= '<li><a href="'.esc_url(wp_logout_url( home_url() )).'"><i class="pfadmicon-glyph-476"></i> '. esc_html__('Logout','pointfindert2d').'</a></li>';
之后,我add_action()
向我的子主题添加了一个调用,function.php
并在那里添加了按钮,它也可以正常工作:
function swi_add_button_to_widget(&$pfmenu_output) {
$pfmenu_output .= '<li><a href="http://my.testsite.com/market"><i class="pfadmicon-glyph-476"></i> '. esc_html__('Car Market,'pointfindert2d').'</a></li>';
}
add_action( 'pf_add_widget_button', 'swi_add_button_to_widget' );
问题定义
但是上述两种方法都只能在我第一次更新 PointFinder 主题之前有效,因为dashboard-page.php
很可能会在更新期间被覆盖。
通过搜索所有寻找do_action()
和do_action_ref_array()
. 没有什么...
解决方案 ?
因此,是否有任何其他方法可以从我的子主题中访问此$pfmenu_output
变量以添加额外的按钮?
当主题开发人员没有为此特定目的内置一些预先制作的动作挂钩时,我是否完全陷入困境?