发布时自动将类别添加到帖子

时间:2014-10-24 17:41:29

标签: php wordpress

当我点击“已发布”时,我想在帖子中添加一个自动类别,也许是通过创建一个函数来放入functions.php?这将节省我的时间,而不是滚动大量的类别来勾选。例如,为所有帖子指定“awesome”类别(同时保留已分配每个帖子的类别)。

头脑风暴法A

是否可以通过为wp_set_post_categorieswp_set_object_terms制作一个名为“awesome”类别的函数来实现此目的?我不太了解codex足以定制它以满足我的需求。

<?php wp_set_post_categories( $post_ID, $post_categories, $append ) ?> 
or 
<?php wp_set_object_terms( $object_id, $terms, $taxonomy, $append ); ?> 

头脑风暴法B

另外,我偶然发现this code below,但不知道如何使用它。以下代码对我有用吗?如果是,您如何为名为“awesome”的类别自定义此代码?代码中是否有我需要用我的信息替换的地方?或者你会建议使用上面的代码吗?还是另一种方法?

“CODE A”:保存后自动对帖子进行分类和标记(取自wpsnipp.com)

<?php
add_action( 'wp_insert_post', 'update_post_terms' );
function update_post_terms( $post_id ) {
    if ( $parent = wp_is_post_revision( $post_id ) )
        $post_id = $parent;
    $post = get_post( $post_id );
    if ( $post->post_type != 'post' )
        return;
    // add a tag
    wp_set_post_terms( $post_id, 'new tag', 'post_tag', true );
    // add a category
    $categories = wp_get_post_categories( $post_id );
    $newcat    = get_term_by( 'name', 'Some Category', 'category' );
    array_push( $categories, $newcat->term_id );
    wp_set_post_categories( $post_id, $categories );
}
?>

1 个答案:

答案 0 :(得分:1)

我只是走简单的路线,用jQuery做。将所需类别的ID放在选择器中(在此示例中为#in-category-7):

add_action( 'admin_head-post-new.php', 'mark_default_category' );
add_action( 'admin_head-post.php',     'mark_default_category' );

function mark_default_category() 
{
    ?>
        <script type="text/javascript">
        jQuery(document).ready(function($) { 
            $('#in-category-7').prop('checked',true);
        });             
        </script>
    <?php
}

使用钩子和所有这些来研究save_post + wp_insert_term。在这些搜索结果中,我没有找到精炼save_post的示例(并且需要)。仅搜索save_post以获取良好示例。