在我的主题中有一个带有很多功能的functions-template.php文件。其中一个回应了网站上的类别描述。
function woocommerce_taxonomy_archive_description() {
if ( is_tax( array( 'product_cat', 'product_tag' ) ) && get_query_var( 'paged' ) == 0 ) {
global $wp_query;
$cat = $wp_query->get_queried_object();
$thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true );
$image = wp_get_attachment_image_src( $thumbnail_id, 'full' );
$description = apply_filters( 'the_content', term_description() );
if ( $image && yit_get_option( 'shop-category-image' ) == 1 ) {
echo '<div class="term-header-image"><img src="' . $image[0] . '" width="' . $image[1] . '" height="' . $image[1] . '" alt="' . $cat->name . '" /></div>';
}
if ( $description ) {
echo '<div class="term-description">' . $description . '</div>';
}
}
}
我希望在不弄乱文件的情况下回显另一个变量。有没有办法超越&#34;现有的功能?
我一直在用mu-plugins等摆弄,但没有成功。
在我的自定义函数文件中添加相同的函数时,我总是遇到Fatal error: Cannot redeclare woocommerce_taxonomy_archive_description() (previously declared in
错误。
答案 0 :(得分:3)
是的,它可以从子主题中覆盖。您可以从子主题functions.php文件中覆盖该函数。
详细了解儿童主题https://codex.wordpress.org/Child_Themes
WordPress首先加载子主题,然后加载父主题。因此,如果您在子主题中创建一个具有相同名称的函数,那么! function_exists
的if条件将为false,因此不会声明此函数。
如果要从插件中覆盖,则必须在先前的执行中声明该函数。尝试在init钩子中声明它。
add_action('init', 'theme_func_override', 5);
function theme_func_override(){
function override_func(){
//code goes here
}
}
<强>更新强>
如果函数未在if条件下使用function_exists()
进行声明,则您无法覆盖它!