从 wordpress 中的子主题 functions.php 中禁用主题功能

And*_*ome 3 php wordpress themes function

我在 wordpress 中的主题有问题,它在我的主题上显示了它自己的 og:meta 描述,因此由于一个 seo 插件中的所有内容,它被复制了。

我想从主题中禁用那些,但我不知道如何,所以我设法在 php 文件中找到了触发它在网站上显示的功能,但我不知道如何从功能中禁用它。 php 或我的孩子主题,所以更新时它不会被覆盖。有问题的功能如下

// Open Graph Meta
function aurum_wp_head_open_graph_meta() {
 global $post;

 // Only show if open graph meta is allowed
 if ( ! apply_filters( 'aurum_open_graph_meta', true ) ) {
  return;
 }

 // Do not show open graph meta on single posts
 if ( ! is_singular() ) {
  return;
 }

 $image = '';

 if ( has_post_thumbnail( $post->ID ) ) {
  $featured_image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'original' );
  $image = esc_attr( $featured_image[0] );
 }

 ?>

 <meta property="og:type" content="article"/>
 <meta property="og:title" content="<?php echo esc_attr( get_the_title() ); ?>"/>
 <meta property="og:url" content="<?php echo esc_url( get_permalink() ); ?>"/>
 <meta property="og:site_name" content="<?php echo esc_attr( get_bloginfo( 'name' ) ); ?>"/>
 <meta property="og:description" content="<?php echo esc_attr( get_the_excerpt() ); ?>"/>

 <?php if ( '' != $image ) : ?>
 <meta property="og:image" content="<?php echo $image; ?>"/>
 <?php endif;
}

add_action( 'wp_head', 'aurum_wp_head_open_graph_meta', 5 );
Run Code Online (Sandbox Code Playgroud)

非常感谢。

Wil*_*ton 5

这个函数实际上有一个内置的短路和提前返回的方法。如果false传递给过滤器的值aurum_open_graph_metaif 将在创建任何输出之前返回。

add_filter( 'aurum_open_graph_meta',  '__return_false' );
Run Code Online (Sandbox Code Playgroud)

您可以__return_false()在此处阅读有关特殊功能的信息:https : //codex.wordpress.org/Function_Reference/_return_false

如果此函数没有提前返回标志,则停止它执行的另一种方法是删除该函数创建的操作。这将是一种更通用的方法,可以应用于在 WordPress 中任何地方注册的大多数操作。

添加您自己的操作,该操作在添加要删除的操作之后但在执行之前运行

在这种情况下,您可以使用init钩子来实现这一点。在你的动作函数中调用remove_action()你想要删除的细节或钩子。

add_action( 'init', 'remove_my_action' );
function remove_my_action(){
      remove_action( 'wp_head', 'aurum_wp_head_open_graph_meta', 5 );
}
Run Code Online (Sandbox Code Playgroud)

请注意,操作需要$priority在添加时删除(在本例中为“5”)。尝试将上述代码添加到您的子主题的 functions.php 文件中,看看它是否删除了操作。

如果您只支持 php>5.3,那么您可以使用匿名函数清理该代码:

add_action( 'init', function() { 
    remove_action( 'wp_head', 'aurum_wp_head_open_graph_meta', 5 );
}
Run Code Online (Sandbox Code Playgroud)

关于在 WordPress 中添加/删除操作的一些额外阅读:https : //codex.wordpress.org/Function_Reference/remove_action