如何最好地存储从使用自定义分类的帖子和页面中提取的数据(URL和ID

时间:2018-03-11 作者:Sean

我想存储从帖子/页面内容提取的元数据:

  • 同一博客上链接在每个帖子/页面内容中的其他帖子/页面的ID
  • 每个帖子/页面内容中包含的某些外部URL
    • 我创建了两个自定义分类法来存储此信息:internal_referenceexternal_reference. 两者都是非等级和非公共的。在以编程方式提取元数据时,编辑页面元框也会被关闭,我不希望用户使用为其他分类法(如类别)提供的复选框来覆盖这一点。

      我编写了一个函数,可以从帖子/页面内容中提取ID和URL,该函数运行在save_post

      The problem I\'m having 是存储此信息的最佳方式。显然我必须使用wp_set_post_terms 将术语与所讨论的帖子相关联,但我无法确定是否需要使用add_term_meta 设置ID和URL,或者我是否可以只使用术语的名称或slug字段。如果最好使用术语元数据来存储,那么在调用后如何查找每个新创建的术语的IDwp_set_post_terms 有一堆URL或帖子ID?

      这种事情在WordPress中是如何实现的?如果这是一个相当基本的问题,请原谅我,但WordPress的这个功能对我来说是新的。

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

啊,我找到了。我只需要为每个术语指定一个唯一的名称(因此对于外部URL,我将它们命名为url-[md5] 哪里[md5] 是URL的MD5哈希),然后调用add_term_meta 并设置必要的信息,然后使用我的自定义分类法将此术语添加到帖子中。例如,这是正在工作的外部术语元数据设置器:

foreach ( $external_urls as $url ) {
    $url = esc_url( $url );
    // don\'t use wp_hash here because it salts the data
    $term_name = "url-" . md5( $url );
    $terms[$term_name] = $url;
}

// update post\'s reference taxonomy terms (replaces any existing terms)
wp_set_post_terms( $post->ID, array_keys( $terms ), \'external_reference\' );

// add metadata
foreach ( $terms as $term_name => $url ) {
    // get term
    $term = get_term_by( \'name\', $term_name, \'external_reference\' );
    // add URL as metadata for the term created above
    update_term_meta( $term->term_id, "url", $url );
}

结束

相关推荐

Demo Import changes terms ids

我正在使用https://github.com/proteusthemes/one-click-demo-import 然而,要为我的主题创建一键式演示导入,当我单击按钮导入通过WordPress导出的演示数据时,使用ID为9的自定义帖子类型类别的页面将停止工作,因为导入演示数据时,类别的ID将更改为20或其他。没有其他类别具有相同的ID,并且它是在新的WP安装上完成的。在导入演示数据时,是什么导致此问题:<wp:term> <wp:term_id><![CD