WordPress.org

Make WordPress Core

Ticket #12702: Enable sticky for custom post type 15659.patch

File Enable sticky for custom post type 15659.patch, 6.1 KB (added by azizur, 8 years ago)

Enable sticky for custom post type r15659

  • wp-admin/includes/default-list-tables.php

     
    920920                                        </select>
    921921                                </label>
    922922
    923         <?php if ( 'post' == $screen->post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?>
     923        <?php if ( post_type_supports( $screen->post_type, 'sticky' ) && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?>
    924924
    925         <?php   if ( $bulk ) : ?>
     925        <?php   if ( $bulk && post_type_supports( $screen->post_type, 'sticky' ) ) : ?>
    926926
    927927                                <label class="alignright">
    928928                                        <span class="title"><?php _e( 'Sticky' ); ?></span>
     
    933933                                        </select>
    934934                                </label>
    935935
    936         <?php   else : // $bulk ?>
     936        <?php   elseif(post_type_supports( $screen->post_type, 'sticky' )) : // $bulk ?>
    937937
    938938                                <label class="alignleft">
    939939                                        <input type="checkbox" name="sticky" value="sticky" />
    940                                         <span class="checkbox-title"><?php _e( 'Make this post sticky' ); ?></span>
     940                                        <span class="checkbox-title"><?php _e( 'Make this sticky' ); ?></span>
    941941                                </label>
    942942
    943943        <?php   endif; // $bulk ?>
  • wp-admin/includes/meta-boxes.php

     
    116116} elseif ( !empty( $post->post_password ) ) {
    117117        $visibility = 'password';
    118118        $visibility_trans = __('Password protected');
    119 } elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) {
     119} elseif (post_type_supports( $post->post_type, 'sticky' ) && is_sticky( $post->ID ) ) {
    120120        $visibility = 'public';
    121121        $visibility_trans = __('Public, Sticky');
    122122} else {
     
    130130
    131131<div id="post-visibility-select" class="hide-if-js">
    132132<input type="hidden" name="hidden_post_password" id="hidden-post-password" value="<?php echo esc_attr($post->post_password); ?>" />
    133 <?php if ($post_type == 'post'): ?>
     133<?php if (post_type_supports( $post->post_type, 'sticky' )): ?>
    134134<input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" <?php checked(is_sticky($post->ID)); ?> />
    135135<?php endif; ?>
    136136<input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo esc_attr( $visibility ); ?>" />
    137137
    138138
    139139<input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
    140 <?php if ($post_type == 'post'): ?>
    141 <span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked(is_sticky($post->ID)); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e('Stick this post to the front page') ?></label><br /></span>
     140<?php if (post_type_supports( $post->post_type, 'sticky' )): ?>
     141<span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked(is_sticky($post->ID)); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e('Stick this to the front page') ?></label><br /></span>
    142142<?php endif; ?>
    143143<input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, 'password' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e('Password protected'); ?></label><br />
    144144<span id="password-span"><label for="post_password"><?php _e('Password:'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo esc_attr($post->post_password); ?>" /><br /></span>
  • wp-includes/post.php

     
    2323                'hierarchical' => false,
    2424                'rewrite' => false,
    2525                'query_var' => false,
    26                 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions' ),
     26                'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'sticky', 'trackbacks', 'custom-fields', 'comments', 'revisions' ),
    2727        ) );
    2828
    2929        register_post_type( 'page', array(
     
    13341334 * @return bool Whether post is sticky.
    13351335 */
    13361336function is_sticky( $post_id = 0 ) {
     1337    global $post;
     1338    $post_type = $post->post_type;
     1339   
    13371340        $post_id = absint( $post_id );
    13381341
    13391342        if ( ! $post_id )
     
    13411344
    13421345        $stickies = get_option( 'sticky_posts' );
    13431346
    1344         if ( ! is_array( $stickies ) )
     1347        if ( ! is_array( $stickies ) || ! isset($stickies[$post_type]) )
    13451348                return false;
    13461349
    1347         if ( in_array( $post_id, $stickies ) )
     1350        if ( in_array( $post_id, $stickies ) || in_array( $post_id, $stickies[$post_type] ))
    13481351                return true;
    13491352
    13501353        return false;
     
    14861489 * @param int $post_id Post ID.
    14871490 */
    14881491function stick_post($post_id) {
     1492    global $post;
     1493    $post_type = $post['post_type'];
     1494   
    14891495        $stickies = get_option('sticky_posts');
    14901496
    1491         if ( !is_array($stickies) )
    1492                 $stickies = array($post_id);
     1497        if ( !is_array($stickies) || !isset($stickies[$post_type]) )
     1498                $stickies[$post_type] = array($post_id);
    14931499
    1494         if ( ! in_array($post_id, $stickies) )
    1495                 $stickies[] = $post_id;
     1500        if ( ! in_array($post_id, $stickies[$post_type]) )
     1501                $stickies[$post_type][] = $post_id;
    14961502
    14971503        update_option('sticky_posts', $stickies);
    14981504}
     
    15071513 * @param int $post_id Post ID.
    15081514 */
    15091515function unstick_post($post_id) {
     1516    global $post;
     1517    $post_type = $post['post_type'];
     1518   
    15101519        $stickies = get_option('sticky_posts');
    15111520
    1512         if ( !is_array($stickies) )
     1521        if ( !is_array($stickies) || !isset($stickies[$post_type]) )
    15131522                return;
    15141523
    1515         if ( ! in_array($post_id, $stickies) )
     1524        if ( ! in_array($post_id, $stickies[$post_type]) )
    15161525                return;
    15171526
    1518         $offset = array_search($post_id, $stickies);
     1527        $offset = array_search($post_id, $stickies[$post_type]);
    15191528        if ( false === $offset )
    15201529                return;
    15211530
    1522         array_splice($stickies, $offset, 1);
     1531        array_splice($stickies[$post_type], $offset, 1);
    15231532
    15241533        update_option('sticky_posts', $stickies);
    15251534}