【问题标题】:Wordpress - How to modify URI of Featured image before it loadedWordpress - 如何在加载之前修改特色图片的 URI
【发布时间】:2016-04-28 09:12:16
【问题描述】:

我正在使用 Wordpress 4.5。之前我使用本地服务器存储图片(包括精选图片,例如:wp-content/uploads/2016/03/aaabbbccc.jpg)。现在我想将它移动到 AWS S3 Bucket 和 Cloudfront,我不想在 Wordpress 的数据库中进行更改,并决定编写一个插件来将我的 cloudfront 域(替换当前域)加入到 wp-content 链接每次检索来自数据库,如:https://xxyyzzqqaa.cloudfront.net/wp-content/uploads/2016/03/aaabbbccc.jpg

我在我的插件中使用了一个动作钩子:

add_action( 'the_post', 'change_featured_image' );

现在我不知道下一步该怎么做?请给我一些建议,提前谢谢!

【问题讨论】:

    标签: wordpress amazon-web-services dynamic-featured-image


    【解决方案1】:

    我找到了我的问题的解决方案,这很容易,但我是 WP 新手,所以我看不到这个。

    在您的插件中,或者您想在 WP 加载时捕获此事件的位置,添加此过滤器:
    add_filter( 'post_thumbnail_html', 'change_featured_image' );
    与:

    • post_thumbnail_html 是 WP 的内置过滤器。
    • change_featured_image 是函数,用户定义,在 post_thumbnail_html 返回结果之前运行。

    我对这个函数有些困惑,我不知道获取值的变量。最后,我在WP API文档中找到,每个vars内置过滤器使用,你也可以使用。

    示例代码如下:

    function change_featured_image($attr)
    {
    
        global $wpdb;
    
        $opt = get_option('s3dcs_status');//My value in `wp_options`
        if(empty($opt)) echo $attr;
        else{
            /// Preparing variables
            $pattern = '~(http.*\.)(jpe?g|png|[tg]iff?|svg)~i';
               $m = preg_match_all($pattern,$attro,$matches);
            $il = $matches[0][0];
            $tail = explode("wp-content", $il)[1];
            $s3dcs_remote_link = get_option('s3dcs_cfs3in') . "/wp-content" . $tail;
                   echo str_replace($il, $s3dcs_remote_link, $attr) ;
        }   
    }
    

    就是这样。如果您有任何问题,请在此处发布,让所有人都知道。

    【讨论】:

      猜你喜欢
      • 2015-06-24
      • 1970-01-01
      • 2018-06-05
      • 2012-11-30
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 2019-07-31
      • 2016-03-18
      相关资源
      最近更新 更多