【问题标题】:Wordpress: Resize $term attachment using urlWordpress:使用 url 调整 $term 附件的大小
【发布时间】:2016-11-18 17:37:38
【问题描述】:

我目前已将此问题提交到 Wordpress 部分但没有成功。问题可以在here找到。

我正在使用此插件将图像附加到自定义分类。该插件的函数返回附加术语的图像如下:

function get_wp_term_image($term_id){
    return get_option('_category_image'.$term_id);  
}

编辑get_wp_term_image($term_id)返回图片的url。

它工作正常,但我想调整返回图像的大小,因为我在显示所有分类类别的页面中使用它,并带有相对拇指。这意味着如果您上传一张大图片,您会得到该图片,并且页面会变得非常难以加载。我试图在我的页面循环中添加这个钩子但没有成功:

$term_id = $term->term_id;
if (function_exists('get_wp_term_image'))
   {
    $meta_image = get_wp_term_image($term_id);
    //tried this
    $term_image = wp_get_attachment_image_src($term_id, 'smalltax');
    //and this
    $image_id = attachment_url_to_postid($meta_image);
    //no success
    }
  • 在第一种情况下,我假设wp_get_attachment_image_src 挂钩会考虑来自任何 id 的附件,但我错了。 注意。我没有图像 ID,我有 image urlterm_id
  • 在第二种情况下,我想用 attachment_url_to_postid 钩子然后用其他一些调整大小 调整。

你能提供一个解决方案吗?甚至帮助修改插件本身。谢谢!

【问题讨论】:

    标签: php wordpress image-processing attachment image-size


    【解决方案1】:

    你试过了吗?

    $term_image = wp_get_attachment_image_src($meta_image, 'smalltax');
    

    我假设 $meta_image 是您要查找的图像的 ID...如果是这样,我的行就可以了。您将 $term_id 传递给该函数,它是术语的 ID,而不是图像的 ID。

    更新

    既然你已经指定 $meta_image 是完整尺寸图像的 URL,那么为了得到你想要的东西,首先要得到它的 ID...然后调用一个默认的 WP 函数来检索你的图像大小想。一种关于方式的破解,但它似乎是你唯一的选择......所以你需要一个类似于这样的功能:

    // Function to get an image's ID by it's full sized URL
    function get_image_id_by_url( $image_url ) {
        global $wpdb;
        $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid='%s';", $image_url ) ); 
        return $attachment[0]; 
    }
    

    然后你会在这些行上使用一些东西:

    $image_id = get_image_id_by_url( $image_url );
    $$term_image = wp_get_attachment_image_src( $image_id, 'smalltax' );
    

    【讨论】:

    • 是的,我试过了!实际上 $meta_image 是图像的 url。出于这个原因,我正在尝试一些事情或从 url 获取 id,或转换函数以返回 ID!我将编辑答案以使其更清楚!
    • 如果您存储图像的 ID 而不是 URL,当然会更好。
    • 谢谢你!这是一个很好的解决方案。最终,当我上传图片时如何分配图片ID?我有这个功能来保存图像:function categoryimagesave($term_id){ if(isset($_POST['tag-image'])){ if(isset($_POST['tag-image'])) update_option('_category_image'.$term_id,$_POST['tag-image'] ); } }
    • 这个函数不需要改变。需要改变的是你如何获得$_POST['tag-image']。那就是魔法发生的地方。告诉我这个函数,我可以帮忙。
    • 这里是处理上传pastebin.com/HQmMdSyG (php) 的php 文件的粘贴箱。此文件正在与此 js 交互 pastebin.com/QzESu6nf 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2014-10-29
    • 1970-01-01
    • 2012-09-19
    相关资源
    最近更新 更多