将图像URL从动态重写为原始

时间:2012-11-18 作者:Jared

这里的交易:我的插件自动水印图像从可湿性粉剂画廊的飞行使用GD库,无论这些图像出现在哪里。因此,我有这些附件的物理副本(在wp上传中),还有一个带水印的动态图像副本,我使用替换页面上的图像源Simple HTML DOM.

现在,我的页面上有一个指向如下URL的图像:

http://localhost/wp-content/plugins/pluginname/image.php?original=http%3A%2F%2Flocalhost%2Fwp-content%2Fuploads%2F2012%2F09%2FPenguins-300x225.jpg&username=&wmtext=localhost&wmsize=14&wmcolor=%23000000&wmpos=top-center&pin_hoveron=1&pin_hoverimg=http%3A%2F%2Flocalhost%2Fwp-content%2Fplugins%2Fpluginname%2Fadd-to-etc.png&followimg=&pin_on=1&follow_on=1

我要做的是使图像源看起来像是原始版本,但显示动态图像。我曾试图弄乱重写规则,但无论我怎么尝试,它似乎都不会做任何事情。规则将添加到。htaccess,但没有任何更改。这就是我在胡闹的原因:

add_action(\'generate_rewrite_rules\', array( $this, \'addRewrites\' ) );

public function addRewrites( $content ) {
    global $wp_rewrite;
    $new_rules = array(
        \'img/(.*)\'      => plugins_url( \'image.php\', __FILE__ ) . \'?etc=$1\',
    );
    $wp_rewrite->non_wp_rules += $new_rules;
}
现在,如果我访问图像URL或带有图像的页面,则不会发生任何事情。=/在重写规则方面,我是个新手,所以这有点超出我的能力。

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

我最终将代码更改为以下内容,这正是我所需要的:

挂钩:

add_action( \'generate_rewrite_rules\', array( $this, \'addRewrites\' ) );
创建规则:

public function addRewrites( $content ) {
    global $wp_rewrite;

    $plugin_path = substr( str_replace( home_url(), \'\', plugins_url( \'\', __FILE__ ) ), 1 );
    $upload_path = substr( str_replace( home_url(), \'\', wp_upload_dir()[\'baseurl\'] ), 1 );

    $new_rules = array(
        $upload_path . \'/*(.+\\.jpg)$\' => $plugin_path . \'/image.php?original=$1\',
        $upload_path . \'/*(.+\\.gif)$\' => $plugin_path . \'/image.php?original=$1\',
        $upload_path . \'/*(.+\\.png)$\' => $plugin_path . \'/image.php?original=$1\',
    );

    $wp_rewrite->non_wp_rules += $new_rules;
}
这只会上传文件夹中的图像,所以我相信这是非常安全的。

SO网友:Rarst

我不确定您的要求的完整范围,但我可能会:

注册将用于代替原始图像的特殊图像大小

结束

相关推荐