需要建议>将类别分配转换为自定义帖子元值

时间:2010-09-16 作者:Scott B

在我发现向页面和帖子编辑器中添加元框(带有自定义帖子元选择)的能力之前,我曾经(并且在一定程度上仍然)使用类别来定义自定义帖子元。

例如,为了制作一篇文章nofollow或noindex,我创建了一个名为nofollow的类别和另一个名为noindex的类别,并将其中一个或两个类别分配给一篇文章或页面。

然后在我的标题中。php文件中,我会进行in\\u类别测试,以便将适当的元标记写入页面。

示例:

<?php
if (in_category(\'noindex\') && in_category(\'nofollow\')){?>
<meta name="robots" content="noindex, nofollow">
<?php}?>
我还有一些自定义类别,如“禁用此页面的Adsense”、“不显示此页面的图像附件”、“从菜单中隐藏此页面”等。。。

所以,现在我决定不再使用应该使用自定义post meta的类别,而是使用标题中的上述代码。php改为。。。

<?php 
    if (get_post_meta( $post->ID, \'_noindex\', true ) && get_post_meta( $post->ID, \'_nofollow\', true )){>?
    <meta name="robots" content="noindex, nofollow">
<?php } ?>
这就是我的计划,但现在我遇到了升级网站的问题,这些网站使用旧方法通过类别分配定义自定义帖子选项。

因此,我需要一个路由,用于为我正在升级的站点中的每个帖子和页面将类别值重新分配为自定义帖子元值。

我只是在寻找一些关于如何进行此操作的快速建议,以及一些关于必要例程的代码提示。

由于这是一个可以更新的主题,作为更新过程的一部分,我想在第一次安装主题时(或用户单击我的升级工具)运行一次脚本,该脚本在选项表中运行,并且对于我的自定义类别分配的每个实例,它会为该帖子或页面创建必要的自定义元分配。

例如,如果一篇文章当前属于“隐藏”类别,它将被分配给“\\u Hidden”post meta。

希望我已经解释得足够好了。我很感激你能提供的任何见解。

也许它就像为每个可能的类别分配运行的一系列自定义SQL语句一样简单?

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

基本思想是循环浏览帖子及其类别,在匹配项上分配meta。

类似这样的内容(确保检查数据的测试副本等):

$posts = get_posts( array(
    \'numberposts\' => -1
) );

foreach( $posts as $post ) {

    $categories = get_the_category( $post->ID );

    foreach( $categories as $category ) {

        if( \'Hidden\' ==  $category->name )
            add_post_meta( $post->ID, \'_hidden\', \'yes\', true );
    }

}
完成后忘记添加删除:

$category = get_category_by_slug( \'hidden\' );
wp_delete_category( $category->term_id );

结束

相关推荐