将IPTC关键字转换为博客文章标签

时间:2015-04-20 作者:Mirko Pernjakovic

对于wp或编码之类的东西,我完全是一个新手,但我通过一点阅读来完成事情。我需要一种方法,将附加到媒体文件的IPTC提取的关键字转换为博客帖子标签。

这是我的工作流程-我上传了一张图片,图片作为特色图片附在帖子上,带有水印,还有一个指向原始大小的链接。图像本身有关键字、名称、描述等。。。

一切几乎都是自动化的。使用media uploader上传,以上所有操作都在自动驾驶仪上进行,除了我需要将媒体页面中的媒体文件关键字复制到博客帖子标签。

是否有一种方法可以从附加到帖子的图像中指定关键字,以自动将其添加到该博客帖子标记中?

2 个回复
SO网友:cybmeta

WordPres有一个从图像中提取IPTC信息的功能,该功能是wp_read_image_metadata. 该功能仅在管理端可用,according with the codex, 它不提取IPTC关键字。但你可以使用iptcparse from PHP 您可以自己提取IPTC关键字并将其设置为post标签。

在您的问题中,您说您已经自动完成了将图像附加为帖子特色图像的过程,因此您可以在该过程中轻松获取图像ID和帖子ID。将图像附加到帖子后,将帖子ID存储在$post_ID 和中的图像ID$image_ID 然后你可以这样做:

$image = getimagesize( get_attached_file( $image_ID ), $info );

if( isset( $info[\'APP13\'] ) ) {

   $iptc = iptcparse( $info[\'APP13\'] );

   // 2#025 is the key in the iptc array for keywords
   if( isset( $iptc[\'2#025\'] ) && is_array( $iptc[\'2#025\'] ) ) {

        // Last param is true to append these tags to existing tags,
        // set it to false to replace existing tags
        // See https://codex.wordpress.org/Function_Reference/wp_set_post_tags
        wp_set_post_tags( $post_ID, $iptc[\'2#025\'], true );

   }

}
如果使用set_post_thumbnail 函数(使用edit post屏幕设置特色图像也使用该函数),您可以将上述代码挂接到updated_post_meta 行动(set_post_thumbnail 使用元数据设置特色图像):

add_action( \'updated_post_meta\', function( $meta_id, $object_id, $meta_key, $_meta_value ) {

    // Check that meta 
    if( $meta_key == \'_thumbnail_id\' ) {

        $image = getimagesize( get_attached_file( $_meta_value ), $info );

        if( isset( $info[\'APP13\'] ) ) {

            $iptc = iptcparse( $info[\'APP13\'] );

            if( isset( $iptc[\'2#025\'] ) && is_array( $iptc[\'2#025\'] ) ) {

                wp_set_post_tags( $object_id, $iptc[\'2#025\'], true );

            }

        }


    }

}, 10, 4 );
Note: 代码未测试。就写在这里。您可能还需要处理删除或更改特征图像的时间。

Note2: 我读了你的问题,注意到你(引用你的话)“对于wp或编码之类的东西是新手”。不确定您是否理解上面的代码,我认为第二段代码比第一段代码对您更有帮助。

SO网友:Mark Kaplun

视情况而定。要提取IPTC关键字,您必须找到一个库或代码示例,您可以使用,因为我不记得wordpress中有任何这样做的内容。

至于使用关键字作为帖子的标签,理论上是可能的。它的主要问题是图像没有以“硬”的方式附在帖子上。一篇文章只包含一个图像的url,因此,虽然图像可能会显示在管理员中,与上载它的文章相关联,但它不限于仅显示在那里。因此,棘手的部分是决定哪些图像应该用作标记的来源。

结束

相关推荐

Display posts from catagories

我正在使用选项框架。这样可以保存类别ID。获取我已完成的ID$cat = $atts[\'post_catagory\']; var_dump($cat); var转储结果为array (size=2) 0 => string \'1\' (length=1) 1 => string \'15\' (length=2)这里1和15是分类ID。查询我使用过的帖子$args = array( \'orderby\'=> ASC,\'cat\'=>