如何在同一服务器内的帖子/页面中附加热链接图像?

时间:2013-01-04 作者:Diana

我不确定这是否有意义,但我正在尝试将热链接图像附加到他们的帖子/页面上,没有幸运的插件,大多数插件都是这样的Cache images 工作正常,但仅限于外部域,我需要在同一域/服务器中自动附加热链接图像。

附录:这是因为将静态html文件中的内容粘贴到WP页面和帖子中。

谢谢你的提示!

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

感谢@toscho,我想我知道了你的代码是如何工作的(这需要时间啊),首先在服务器中导入图像文件(Add form server 插件可以做到这一点,也可以使用自定义脚本),在每个帖子/页面中查找与媒体库中当前文件名匹配的图像路径,然后附加它们。

我不能使用这个,因为在不同的文件夹中有不同的图像但有相同的文件名(还有一些文件名使用空格的问题),然后我不得不使用this plugin, 你必须访问/编辑每个页面/帖子并下载图片,这可能会很痛苦,但至少可以在任何地方使用文件(例如,相同的doamin),当然有办法破解这个插件,使其在页面上的每个帖子上工作。

(如果图像文件名有空格,此插件仍将返回空图像,您需要手动重新编辑,不知道为什么WP可以显示带有奇怪文件名的热链接图像)

SO网友:fuxia

没有完整的代码,但我知道您可以将其粘在一起。:)

查找未附加图像的所有帖子ID(借用自wp-admin/upload.php):

global $wpdb;
$lost = $wpdb->get_col( "
    SELECT ID FROM $wpdb->posts
    WHERE post_type = \'attachment\' AND post_parent > \'0\'
    AND post_parent NOT IN (
        SELECT ID FROM $wpdb->posts
        WHERE post_type NOT IN ( \'attachment\', \'" . join( "\', \'", get_post_types( array( \'public\' => false ) ) ) . "\' )
    )
" );
获取所有帖子ID的图像URL:由于这些附件没有父级,其URL等效于get_the_guid() (这是GUID看起来像URL的两个原因之一,我不喜欢这样)。

$urls = array ();
foreach ( $lost as $id )
    $urls[ $id ] = get_the_guid( $id );
现在查找带有这些图像的帖子,并将这些图像附加到这些帖子上:

global $wpdb;

foreach ( $urls as $id => $url )
{
    $posts = get_posts( array ( \'s\' => $url, \'numberposts\' => 1 ) );

    if ( ! $posts )
        continue;

    $parent_id = $posts[0]->ID;
    $wpdb->query(
        $wpdb->prepare(
            "UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = \'attachment\' AND ID = %d",
            $parent_id,
            $id
        )
    );
}
未测试,仅作为提示。

结束

相关推荐

Images inside post title

有没有办法在帖子标题中插入图片?它还需要在<title> 标签、永久链接等。我之所以需要这样做,是因为我有一个客户希望在页面标题中使用他们的徽标,而不是纯文本。因此,图像可能位于标题中的任何位置,因此我不能只是附加/前置图像。我能想到的唯一解决方案是使用javascript进行查找和替换,但这似乎不是一个很好的解决方案。。。