在创建帖子之前设置一个默认类别--如果用户没有选择

时间:2015-09-28 作者:Wordica

有什么选择吗hook 设置默认值的步骤category 对于custom_post_type 用户什么时候没有选择?

例如,在RoR 它非常简单-通过使用before_save 过滤器您可以在之前设置任何需要的内容update 型号,或before_create - 在创建之前。。。

我怎么能hook 一些action 用户单击后Publish 但在action 结束。。检查一下category 被选为custom_post_type - 如果不是,请设置一些默认值?

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

也许这就是你要找的?

源来自@Michael Fields

/**
 * Set default cat for cpt
 * @source {https://circlecube.com/says/2013/01/set-default-terms-for-your-custom-taxonomy-default/}
 * @source {http://wordpress.mfields.org/2010/set-default-terms-for-your-custom-taxonomies-in-wordpress-3-0/}
 * @license   GPLv2
 */
function set_default_object_terms_203962( $post_id, $post ) {
if ( \'publish\' === $post->post_status ) {
    $defaults = array(
        //\'your_taxonomy_id\' => array( \'your_term_slug\', \'your_term_slug\' )
        \'post_tag\' => array( \'taco\', \'banana\' ),
        \'monkey-faces\' => array( \'see-no-evil\' ),
        );
    $taxonomies = get_object_taxonomies( $post->post_type );
    foreach ( (array) $taxonomies as $taxonomy ) {
        $terms = wp_get_post_terms( $post_id, $taxonomy );
        if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) {
            wp_set_object_terms( $post_id, $defaults[$taxonomy], $taxonomy );
        }
    }}
}
add_action( \'save_post\', \'set_default_object_terms_203962\', 100, 2 );
这对我们很有吸引力。

ps,还有一个plugin 这可能有助于在用户(阅读编辑/作者等)甚至可以发布之前“强制”你的一些愿望