如何将按钮添加到侧栏小部件



我是WordPress的新手,我想在点源主题中的admin仪表板中添加一个自定义按钮。我知道动作钩概念,并且已经成功地用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>';

第二行是我的静态方法。该按钮正确添加到侧边栏窗口小部件中。但是我需要将此代码放在我的Child-Themefunctions.php上,以便在将来的更新过程中保留它。

方法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' );

问题定义

但是上面描述的两种方法都只能在我首次更新点源主题之前起作用,因为dashboard-page.php在更新期间很可能会被过度。

我找不到主题开发团队实现的任何预制动作钩,搜索查找do_action()do_action_ref_array()的所有文件。什么都没有...

解决方案?

因此,是否有其他方法可以从我的子主题中访问此$pfmenu_output变量以添加额外的按钮?

当主题开发人员没有建立一些预先制作的动作钩时,我完全卡住了吗?

选项1:将dashboard-page.php复制到您的孩子主题

我只是在扩大塞巴斯蒂安的评论。您可以将整个dashboard-page.php文件(带有自助操作钩)复制到您的子主题文件夹。然后,您将不得不搜索包含dashboard-page.php文件的父主题中的位置。希望它由父主题的标准模板文件之一包含。然后,您只需将该模板文件复制到您的孩子主题即可覆盖它。然后,您必须更改包含dashboard-page.php文件的行以将同一文件包含在子文件夹中。

例如,如果page.php模板文件具有类似的内容:

include (get_template_directory() . '/dashboard-page.php')

您可以将page.php文件复制到您的孩子主题,然后将该行更改为:

include (get_stylesheet_directory() . '/dashboard-page.php')

请注意,get_stylesheet_directory()检索到儿童主题文件夹的路径,get_template_directory()检索到父主题文件夹的路径。

重要:可能不包含dashboard-page.php文件的标准模板文件之一,而不是由父母包含的其他非标准模板文件包含主题。在这种情况下,您必须将每个随附的文件复制到dashboard-page.php文件。并确保每个include使用每个文件的子主题版本。

选项2:使用JavaScript/jquery

一种替代方法是使用JavaScript代码插入按钮。您可以将JavaScript代码添加到您的子主题模板之一中,以在页面加载后动态更改菜单。我看了一个主题的演示,看起来侧边栏的列表元素具有名为" pf sidebar-menu"的类。您只需添加以下定位类别的代码,并在第一个列表之后插入按钮:

jQuery(".pf-sidebar-menu > li:nth-child(1)").after('<li><a href="http://my.testsite.com/market"><i class="pfadmicon-glyph-476"></i>Car Market</a></li>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="pf-sidebar-menu">
    <li><a href="#"><i class="pfadmicon-glyph-377"></i>Something</a></li>
    <li><a href="#"><i class="pfadmicon-glyph-476"></i>Logout</a></li>
</ul>

fyi,将上述代码添加到网站的一种简单方法是将以下内容添加到您的 child主题的 function.php文件中。这将在您的网站的页脚上使用上述代码创建一个脚本标签。您可能必须添加其他支票以定位特定页面或页面。

<?php
function js_add_sidebar_button() {
    ?>
    <script type="text/javascript">
        jQuery(".pf-sidebar-menu > li:nth-child(1)").after('<li><a href="http://my.testsite.com/market"><i class="pfadmicon-glyph-476"></i>Car Market</a></li>');
    </script>
    <?php
}
add_action( 'wp_footer', 'js_add_sidebar_button' );

使用PHP Code Widget插件

php代码小部件

最新更新