在哪里可以找到在钩子中触发的函数?

时间:2016-09-18 作者:MeltingDog

我是WP的新手,但在过去使用过其他CMS。

为了练习,我想做一个简单的吴商铺。我安装了WP、Woo commerce和Woo commerce Store Front主题,一切正常。

现在我想开始定制主题。我想更改的第一件事是在标题中添加一个新的徽标。我打开了标题。php在店面主题目录中找到了包含徽标图像位置的div,但我看到的只是:

do_action( \'storefront_header\' );

我已经在目录中搜索过,但找不到任何storefront\\u头文件或函数。

那么,我要在这里做什么?是否有任何指南或地图来查找每个单独的元素函数或PHP文件?

如何在模板结构中找到要处理的元素?

4 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

查看当前版本的店面header.php:

/**
 * Functions hooked into storefront_header action
 *
 * @hooked storefront_skip_links                       - 0
 * @hooked storefront_social_icons                     - 10
 * @hooked storefront_site_branding                    - 20
 * @hooked storefront_secondary_navigation             - 30
 * @hooked storefront_product_search                   - 40
 * @hooked storefront_primary_navigation_wrapper       - 42
 * @hooked storefront_primary_navigation               - 50
 * @hooked storefront_header_cart                      - 60
 * @hooked storefront_primary_navigation_wrapper_close - 68
 */
do_action( \'storefront_header\' ); ?>
注释块概述了连接到storefront_header 行动

如果在storefront 字符串的目录\'storefront_header\', 您可以找到这些函数。没有标准的方法来组织这些函数出现的位置,但您可以从以下位置手动跟踪它们functions.php 并遵循所有代码。不过搜索效率更高。

storefront_site_branding 是处理徽标显示方式的函数。它位于storefront/inc/storefront-template-functions.php.

SO网友:Mark Kaplun

do_action 与模板层次结构没有直接关系,它基本上是希望观察何时触发特定操作的观察者的触发器。

找出观察者的最佳方法是对操作的名称进行代码搜索(本例中为storefront\\u标题)。在这种情况下,它仅限于主题文件,但如果您处理的主题“需要”插件,您可能还需要搜索插件的代码。

频繁的gotcha(尤其是在核心代码中)是通过组合字符串动态创建的操作,因此,如果搜索storefront\\u标头没有给出结果,您可能希望尝试搜索操作的前缀或后缀

SO网友:Jon

查看以下两个文件:
wp content\\themes\\myteme\\inc\\storefront模板函数。phpwp content\\themes\\MyTheme\\inc\\woocommerce\\storefront woocommerce模板函数。php

它们具有连接到storefront_header.然后分别搜索每个钩子。例如,搜索storefront_header_container 这是注释列表的顶部。它找到以下函数:

if ( ! function_exists( \'storefront_header_container\' ) ) {
/**
 * The header container
 */
function storefront_header_container() {
    echo \'<div class="col-full">\';
}
}
该函数所做的就是添加HTML<div class="col-full">

因此,您可以根据需要替换replicate unhook并使用

SO网友:gtamborero

一旦知道要挂接到哪里,就可以对storefront\\u标题和位置使用add\\u操作(在我的例子中是60)

functions.php 儿童主题:

<?php
add_action( \'storefront_header\', function() {
echo \'<div class="my-account">MY ACCOUNT</div>\';
}, 60 );
之后,您可以根据需要使用CSS进行样式设置

相关推荐

About wordpress child themes

我对WordPress和儿童主题有一些问题。据我所知,如果我不想在更新主题时失去任何东西,使用子主题是很重要的。我是WordPress的初学者,到目前为止,我一直在使用PageBuilder(管理面板上的板载自定义选项)自定义我的网站,并在“附加CSS”选项中加入几行CSS。所有这些都是在主主题上完成的(只是玩转尝试学习),现在我想开始使用一个儿童主题。问题如下:我不知道我是否可以像通过管理界面设计父主题那样设计我的子主题,或者我是否必须通过文本编辑器(在我的计算机上,然后通过FTP等方式上传)对所有内容