| | 24 | |
| | 25 | register_post_status( 'publish', array('label' => _x('Published', 'post'), 'exclude_from_search' => false, '_builtin' => true, 'label_count' => _n_noop('Published <span class="count">(%s)</span>', 'Published <span class="count">(%s)</span>')) ); |
| | 26 | register_post_status( 'future', array('label' => _x('Scheduled', 'post'), 'exclude_from_search' => false, '_builtin' => true, 'label_count' => _n_noop('Scheduled <span class="count">(%s)</span>', 'Scheduled <span class="count">(%s)</span>')) ); |
| | 27 | register_post_status( 'draft', array('label' => _x('Draft', 'post'), 'exclude_from_search' => false, '_builtin' => true, 'label_count' => _n_noop('Draft <span class="count">(%s)</span>', 'Drafts <span class="count">(%s)</span>')) ); |
| | 28 | register_post_status( 'private', array('label' => _x('Private', 'post'), 'exclude_from_search' => false, '_builtin' => true, 'label_count' => _n_noop('Private <span class="count">(%s)</span>', 'Private <span class="count">(%s)</span>')) ); |
| | 29 | register_post_status( 'trash', array('label' => _x('Trash', 'post'), 'exclude_from_search' => false, '_builtin' => true, 'label_count' => _n_noop('Trash <span class="count">(%s)</span>', 'Trash <span class="count">(%s)</span>')) ); |
| | 428 | * Register a post type. Do not use before init. |
| | 429 | * |
| | 430 | * A simple function for creating or modifying a post status based on the |
| | 431 | * parameters given. The function will accept an array (second optional |
| | 432 | * parameter), along with a string for the post status name. |
| | 433 | * |
| | 434 | * |
| | 435 | * Optional $args contents: |
| | 436 | * |
| | 437 | * label - A descriptive name for the post status marked for translation. Defaults to $post_status. |
| | 438 | * public - Whether posts of this status should be shown in the admin UI. Defaults to true. |
| | 439 | * exclude_from_search - Whether to exclude posts with this post status from search results. Defaults to true. |
| | 440 | * |
| | 441 | * @package WordPress |
| | 442 | * @subpackage Post |
| | 443 | * @since 3.0 |
| | 444 | * @uses $wp_post_statuses Inserts new post status object into the list |
| | 445 | * |
| | 446 | * @param string $post_status Name of the post status. |
| | 447 | * @param array|string $args See above description. |
| | 448 | */ |
| | 449 | function register_post_status($post_status, $args = array()) { |
| | 450 | global $wp_post_statuses; |
| | 451 | |
| | 452 | if (!is_array($wp_post_statuses)) |
| | 453 | $wp_post_statuses = array(); |
| | 454 | |
| | 455 | // Args prefixed with an underscore are reserved for internal use. |
| | 456 | $defaults = array('label' => false, 'label_count' => false, 'exclude_from_search' => true, '_builtin' => false, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false, 'public' => false, '_show' => false); |
| | 457 | $args = wp_parse_args($args, $defaults); |
| | 458 | $args = (object) $args; |
| | 459 | |
| | 460 | $post_status = sanitize_user($post_status, true); |
| | 461 | $args->name = $post_status; |
| | 462 | |
| | 463 | if ( false === $args->label ) |
| | 464 | $args->label = $post_status; |
| | 465 | |
| | 466 | if ( false === $args->label_count ) |
| | 467 | $args->label_count = $args->label; |
| | 468 | |
| | 469 | if ( !$args->_builtin && $args->public ) |
| | 470 | $args->_show = true; |
| | 471 | |
| | 472 | $wp_post_statuses[$post_status] = $args; |
| | 473 | |
| | 474 | return $args; |
| | 475 | } |
| | 476 | |
| | 477 | /** |
| | 478 | * Retrieve a post status object by name |
| | 479 | * |
| | 480 | * @package WordPress |
| | 481 | * @subpackage Post |
| | 482 | * @since 3.0 |
| | 483 | * @uses $wp_post_statuses |
| | 484 | * @see register_post_status |
| | 485 | * @see get_post_statuses |
| | 486 | * |
| | 487 | * @param string $post_type The name of a registered post status |
| | 488 | * @return object A post status object |
| | 489 | */ |
| | 490 | function get_post_status_object( $post_status ) { |
| | 491 | global $wp_post_statuses; |
| | 492 | |
| | 493 | if ( empty($wp_post_statuses[$post_status]) ) |
| | 494 | return null; |
| | 495 | |
| | 496 | return $wp_post_statuses[$post_status]; |
| | 497 | } |
| | 498 | |
| | 499 | /** |
| | 500 | * Get a list of all registered post status objects. |
| | 501 | * |
| | 502 | * @package WordPress |
| | 503 | * @subpackage Post |
| | 504 | * @since 3.0 |
| | 505 | * @uses $wp_post_statuses |
| | 506 | * @see register_post_status |
| | 507 | * @see get_post_status_object |
| | 508 | * |
| | 509 | * @param array|string $args An array of key => value arguments to match against the post statuses. |
| | 510 | * Only post statuses having attributes that match all arguments are returned. |
| | 511 | * @param string $output The type of output to return, either post status 'names' or 'objects'. 'names' is the default. |
| | 512 | * @return array A list of post type names or objects |
| | 513 | */ |
| | 514 | function get_post_stati( $args = array(), $output = 'names' ) { |
| | 515 | global $wp_post_statuses; |
| | 516 | |
| | 517 | $do_names = false; |
| | 518 | if ( 'names' == $output ) |
| | 519 | $do_names = true; |
| | 520 | |
| | 521 | $post_statuses = array(); |
| | 522 | foreach ( (array) $wp_post_statuses as $post_status ) { |
| | 523 | if ( empty($args) ) { |
| | 524 | if ( $do_names ) |
| | 525 | $post_statuses[] = $post_status->name; |
| | 526 | else |
| | 527 | $post_statuses[] = $post_status; |
| | 528 | } elseif ( array_intersect_assoc((array) $post_status, $args) ) { |
| | 529 | if ( $do_names ) |
| | 530 | $post_statuses[] = $post_status->name; |
| | 531 | else |
| | 532 | $post_statuses[] = $post_status; |
| | 533 | } |
| | 534 | } |
| | 535 | |
| | 536 | return $post_statuses; |
| | 537 | } |
| | 538 | |
| | 539 | /** |