如何将批量/快速编辑的状态选项限制为仅发布和草稿?

时间:2012-06-26 作者:Ana Ban

对于我的自定义帖子类型,我只想在批量编辑和快速编辑屏幕中使用“发布”和“草稿”作为可用选项,即。

screenshot

我试着抓住过滤器quick_edit_dropdown_pages_args 但它似乎没有被解雇。我插入了一个wp_die() 在我的回调中,但管理屏幕列出了所有帖子,就像没有更改一样。有什么想法吗?

提前谢谢。

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

回答this Question, 找到了Ana Ban的jQuery解决方案。

add_action( \'admin_head\', \'wpse_56551_script_enqueuer\' );

function wpse_56551_script_enqueuer() 
{
    global $current_screen;

    /**
       /wp-admin/edit.php?post_type=post
       /wp-admin/edit.php?post_type=page
       /wp-admin/edit.php?post_type=cpt  == gallery in this example
     */
    if( \'edit-gallery\' == $current_screen->id ) 
    {
        ?>
        <script type="text/javascript">         
        jQuery(document).ready( function($) {
            $("a.editinline").live("click", function () {
                var ilc_qe_id = inlineEditPost.getId(this);
                setTimeout(function() {
                        $(\'#edit-\'+ilc_qe_id+\' select[name="_status"] option[value="pending"]\').remove();  
                        $(\'#edit-\'+ilc_qe_id+\' select[name="_status"] option[value="private"]\').remove();  
                    }, 100);
            });

            $(\'#doaction, #doaction2\').live("click", function () {
                setTimeout(function() {
                        $(\'#bulk-edit select[name="_status"] option[value="pending"]\').remove();  
                        $(\'#bulk-edit select[name="_status"] option[value="private"]\').remove();  
                    }, 100);
            });       
        });    
        </script>
    <?php
    }

    /**
       /wp-admin/post.php?post=21&action=edit
     */
    if( \'gallery\' == $current_screen->id ) 
    {
        ?>
        <script type="text/javascript">
        jQuery(document).ready( function($) {
            $(\'#post_status option[value="pending"]\').remove();
            $(\'#post_status option[value="private"]\').remove();
        });
        </script>
    <?php
    }
}

[Original Answer]

在中搜索此筛选器/wp-admin/, 我们发现它位于/wp-admin/includes/class-wp-posts-list-table.php. 我们看到它处理的是职位的等级,而不是地位。。。

在这个文件的后面,我们找到了状态组,但它没有任何过滤器,所以我怀疑不会有挂钩的解决方案。。。

// starting at line 950
<div class="inline-edit-group">
<label class="inline-edit-status alignleft">
  <span class="title"><?php _e( \'Status\' ); ?></span>
  <select name="_status">
<?php if ( $bulk ) : ?>
      <option value="-1"><?php _e( \'&mdash; No Change &mdash;\' ); ?></option>
<?php endif; // $bulk ?>
  <?php if ( $can_publish ) : // Contributors only get "Unpublished" and "Pending Review" ?>
      <option value="publish"><?php _e( \'Published\' ); ?></option>
      <option value="future"><?php _e( \'Scheduled\' ); ?></option>
<?php if ( $bulk ) : ?>
      <option value="private"><?php _e( \'Private\' ) ?></option>
<?php endif; // $bulk ?>
  <?php endif; ?>
      <option value="pending"><?php _e( \'Pending Review\' ); ?></option>
      <option value="draft"><?php _e( \'Draft\' ); ?></option>
  </select>
</label>

结束

相关推荐

Bulk User Deletion

我创建了一个WordPress 3.0站点,启用了多站点,并安装了BuddyPress插件(每个插件的最新可用版本)。最初,该网站没有启用验证码,现在创建了数百个垃圾邮件帐户。默认情况下,用户的超级管理面板一次仅显示15个用户。我需要删除几百个用户,一页一页地浏览这个页面很单调。是否有可以帮助批量删除用户的插件?我希望能够一次选择和删除几百个用户(或者更好地通过用户名进行regex搜索)。谢谢