Make WordPress Core


Ignore:
Timestamp:
06/14/2020 09:40:10 PM (6 years ago)
Author:
SergeyBiryukov
Message:

Posts, Post Types: Introduce default_category_post_types filter.

The filter allows custom post types associated with the category taxonomy to opt in to requiring a default category, same as regular posts.

Props enrico.sorcinelli.
Fixes #43516.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/post.php

    r47922 r48043  
    46904690 * Set categories for a post.
    46914691 *
    4692  * If the post categories parameter is not set, then the default category is
    4693  * going used.
     4692 * If no categories are provided, the default category is used.
    46944693 *
    46954694 * @since 2.1.0
    … …  
    47074706        $post_type   = get_post_type( $post_ID );
    47084707        $post_status = get_post_status( $post_ID );
    4709         // If $post_categories isn't already an array, make it one:
     4708
     4709        // If $post_categories isn't already an array, make it one.
    47104710        $post_categories = (array) $post_categories;
     4711
    47114712        if ( empty( $post_categories ) ) {
    4712                 if ( 'post' === $post_type && 'auto-draft' !== $post_status ) {
     4713                /**
     4714                 * Filters post types (in addition to 'post') that require a default category.
     4715                 *
     4716                 * @since 5.5.0
     4717                 *
     4718                 * @param array $post_types An array of post types. Default empty array.
     4719                 */
     4720                $default_category_post_types = apply_filters( 'default_category_post_types', array() );
     4721
     4722                // Regular posts always require a default category.
     4723                $default_category_post_types = array_merge( $default_category_post_types, array( 'post' ) );
     4724
     4725                if ( in_array( $post_type, $default_category_post_types, true )
     4726                        && is_object_in_taxonomy( $post_type, 'category' )
     4727                        && 'auto-draft' !== $post_status
     4728                ) {
    47134729                        $post_categories = array( get_option( 'default_category' ) );
    47144730                        $append          = false;
Note: See TracChangeset for help on using the changeset viewer.