强制Jetpack不使用收藏夹图标/站点图标的og:Image标签

时间:2015-09-18 作者:trejder

我的博客(Jetpack)发出512x512 favicon组件og:image, 因为使用的主题不支持特色图片,并且帖子本身中没有图片/图库。我不得不使用这么大的favicons,因为Wordpress/theme说:

站点图标用作站点的浏览器和应用程序图标。图标必须是正方形,并且至少512像素宽和高。

有什么解决方案可以让我阻止og:image 标签only for favicon (也就是说,如果帖子中直接有任何图像,或者如果我将主题改为支持特色图像的图像,我希望将其导出为og:image; 我只想阻止通过此标记发送favicon/站点图标)。

Edit: 根据Jetpack Blog 我假设,最快的解决方案是忽略上述文本,并将我的favicon设置为I.e。192x192, Facebook应该忽略这一点。但是,有些测试Facebook Debugger 这表明,这并不总是可行的(图像有时不会被忽略),这肯定不会适用于其他类型的社交共享服务。因此,一种写博客的能力og:image 为favicons/站点图标添加标签变得非常必要

2 个回复
最合适的回答,由SO网友:bravokeyl 整理而成

可能是通过Jetpack,但我不确定

现在看看你的网站,我可以说那些打开的图形标签来自Jetpack 插件。

如果帖子中没有可用图像,Jetpack会添加站点图标/图标作为默认图标。

我们可以使用过滤器控制标签的输出

  • jetpack_open_graph_tags
  • jetpack_images_get_images
  • jetpack_open_graph_image_default
  • jetpack_enable_open_graph
    • 仅删除og:图像

      将以下代码放入functions.php 活动主题的。

      function wpse_228649_remove_image_tag( $tags ) {
            unset( $tags[\'og:image\'] );
          return $tags;
      }
      add_filter( \'jetpack_open_graph_tags\', \'wpse_228649_remove_image_tag\' );
      
      声明发件人Jetpack blog

      Jetpack从寻找特色图像开始。如果您没有定义任何内容,我们将查找幻灯片和图库,然后查找可能附加到帖子的任何图像。如果我们没有找到任何附加到该帖子的图像,我们将查找您可能已插入该帖子的单个图像。如果您插入了托管在其他网站上的图像,我们也可以使用它。

      然而,有时您可能没有在帖子中添加任何图像。在这种情况下,我们可以使用以下代码设置默认图像。

      function wpse_203094_custom_image( $media, $post_id, $args ) {
          if ( $media ) {
              return $media;
          } else {
              $permalink = get_permalink( $post_id );
              $url = \'YOUR_CUSTOM_DEFAULT_IMAGE_URL\' ;
      
              return array( array(
                  \'type\'  => \'image\',
                  \'from\'  => \'custom_fallback\',
                  \'src\'   => esc_url( $url ),
                  \'href\'  => $permalink,
              ) );
          }
      }
      add_filter( \'jetpack_images_get_images\', \'wpse_203094_custom_image\', 10, 3 );
      
      也可以使用过滤器更改默认值。

      function wpse_203094_jetpack_default_image() {
          return \'YOUR_IMAGE_URL\';
      }
      add_filter( \'jetpack_open_graph_image_default\', \'wpse_203094_jetpack_default_image\' );
      
      或者,您可以使用以下方法完全禁用它们:

      add_filter( \'jetpack_enable_open_graph\', \'__return_false\' );
      
      注释如下@cjbj 指出一些插件Yoast SEO 可以覆盖打开的图形标记。上述过滤器/代码仅适用于Jetpack 假设没有其他插件覆盖它们。

      更新

      是否有任何解决方案允许我阻止og:仅用于favicon的图像标签

      是的,我们可以使用jetpack_images_get_images 滤器如果我们看看jetpack_og_get_image src我们可以发现它添加了如下核心站点图标

      // Third fall back, Core Site Icon. Added in WP 4.3.
      
      if ( empty( $image ) && ( function_exists( \'has_site_icon\') && has_site_icon() ) ) {
          $image[\'src\']     = get_site_icon_url( 512 );
          $image[\'width\']   = \'512\';
          $image[\'height\']  = \'512\';
      }
      
      最后默认为如下空白图像

      // Finally fall back, blank image
      if ( empty( $image ) ) {
          /**
           * Filter the default Open Graph Image tag, used when no Image can be found in a post.
           *
           * @since 3.0.0
           *
           * @param string $str Default Image URL.
           */
          $image[\'src\'] = apply_filters( \'jetpack_open_graph_image_default\', \'https://s0.wp.com/i/blank.jpg\' );
      }
      
      以便让Jetpack假设它已经有了图像,并且没有必要使用site icon, 我们需要树立一些形象。这可以使用以下代码完成。将此放入functions.php 活动主题的。

      function wpse_203094_no_site_icon( $media, $post_id, $args ) {
          if ( $media ) {
              return $media;
          } else {
              return array( array(
                  \'src\'   => \'\' // here we are conning Jetpack, Hurray!
              ) );
          }
      }
      add_filter( \'jetpack_images_get_images\', \'wpse_203094_no_site_icon\', 10, 3 );
      

SO网友:Gareth Gillman

如果您知道要添加meta标记的函数的名称(并且它是自己添加的)。

function se_remove_meta() {
 remove_action(\'wp_head\',  \'function_name\');
}
add_action( \'init\', \'se_remove_meta\' );

相关推荐