WordPress帖子标签和自定义字段

时间:2011-09-26 作者:shah parthvi

我在WordPress中有一个使用自定义字段的站点,但现在我想自动将该自定义字段用作post标记。

有人知道吗?

谢谢

3 个回复
SO网友:chrisguitarguy

要转换旧的自定义字段,您可以编写一个插件,在激活时使用您的自定义字段名获取所有帖子,并使用handy将其转换为标记wp_set_post_terms.

首先用字段名和帖子类型设置几个常量。

<?php
/**
 * CHANGE THIS! what is your custom field\'s name?
 */
define( \'WPSE29498_FIELD\', \'custom_field_name\' );


/**
 * CHANGE THIS! what post type?
 */
define( \'WPSE29498_TYPE\', \'post\' );
然后激活挂钩功能:

<?php
register_activation_hook( __FILE__, \'wpse29498_field_to_tag\' );
function wpse29498_field_to_tag()
{
    $posts = get_posts(
        array(
            \'post_type\'     => WPSE29498_TYPE,
            \'post_status\'   => array( \'publish\', \'draft\', \'pending\', \'future\' ),
            \'numberposts\'   => -1,
            \'meta_key\'      => WPSE29498_FIELD
        )
    );

    if( empty( $posts ) ) return;

    foreach( $posts as $p )
    {
        if( $meta = get_post_meta( $p->ID, WPSE29498_FIELD, true ) )
        {
            wp_set_post_terms( $p->ID, $meta, \'post_tag\', true );
        }
    }
}
最后,你可以save_post 并查看是否存在自定义字段值。如果是,请确保它不是一个术语,如果不是,请插入它。

不确定这是您需要的还是一次性转换。

<?php
add_action( \'save_post\', \'wpse29498_save_post\' );
function wpse29498_save_post( $post_id )
{
    if( $meta = get_post_meta( $post_id, WPSE29498_FIELD, true ) )
    {
        // get the current post tag
        $terms = wp_get_object_terms( $p->ID, \'post_tag\', \'name\' );

        // if our term is already there, bail
        if( in_array( $meta, $terms ) ) return;

        // add the term if not
        wp_set_post_terms( $post_id, $meta, \'post_tag\', true );
    }
}
As a plugin.

SO网友:chrismou

据我所知,这是不可能做到自动“开箱即用”。一个快速的谷歌,看起来目前没有插件可以帮你完成这项工作。

然而,我看不出有什么理由不能编写插件来实现这一点。您需要使用“save\\u post”挂钩,它将在每次保存/更新帖子时运行,检查自定义字段并将其作为标记应用。

关于这个特定钩子的文档很少,但这里提到了:

http://codex.wordpress.org/Plugin_API/Action_Reference

SO网友:Vidal Quevedo

不久前,我遇到了一个类似的问题,有人问我如何从全能SEO插件中自动添加关键字作为贴子标签(http://www.vidalquevedo.com/how-to-add-tags/#li-评论-62)

看到您的问题后,我使用编写的脚本并对其进行了修改,以自动添加自定义字段值作为post标记。

以下是脚本和帖子的链接:http://www.vidalquevedo.com/wordpress-how-to-automatically-convert-custom-fields-to-post-tags/

谢谢,如果有帮助,请告诉我!

Vq。

结束

相关推荐

定制帖子类型作者的_Author_Posts_link()

我在博客中既有常规的博客帖子,也有自定义的帖子类型。页面模板显示作者帖子链接。如果您单击该链接查找撰写过一些文章的作者,该页面(博客/作者/作者先生)将显示预期的个人信息和作者的文章列表。但是,如果您创建的用户是作者,但只编写了自定义帖子类型,没有常规帖子,则由\\u author\\u posts\\u link()生成的链接(仍然是正确的链接:blog/authors/mr author)显示一个未填充的页面(即:字段全部为空,帖子列表是所有作者的所有帖子的完整列表)。显然,我们在$authordat