Skip to content

Instantly share code, notes, and snippets.

@bryanwillis
Created July 17, 2014 22:34
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bryanwillis/bc2a391788520a6bd4e2 to your computer and use it in GitHub Desktop.
Save bryanwillis/bc2a391788520a6bd4e2 to your computer and use it in GitHub Desktop.
<?php
/*-----------------------------------------------------------------------------------*/
/* Remove Wordpress Post Columns */
/*-----------------------------------------------------------------------------------*/
function remove_post_columns($columns) {
//unset($columns['cb']); // Remove the checkbox
unset($columns['author']); // Remove the Author
//unset($columns['comments']); // Remove comments column
//unset($columns['date']); // Remove date column
//unset($columns['title']); // Remove title column
return $columns;
}
add_filter('manage_posts_columns', 'remove_post_columns');
/*-----------------------------------------------------------------------------------*/
/* Remove Wordpress Pages Columns */
/*-----------------------------------------------------------------------------------*/
function remove_pages_columns($columns) {
//unset($columns['cb']); // Remove the checkbox
unset($columns['author']); // Remove the Author
unset($columns['comments']); // Remove comments column
//unset($columns['date']); // Remove date column
//unset($columns['title']); // Remove title column
return $columns;
}
add_filter('manage_pages_columns', 'remove_pages_columns');
/*-----------------------------------------------------------------------------------*/
/* ADD ID to Page Columns */
/*-----------------------------------------------------------------------------------*/
if ( is_admin()
&& function_exists( 'add_action' )
&& function_exists( 'add_filter' )
&& function_exists( 'get_taxonomies' )
&& function_exists( 'get_post_types' )
) {
add_action( 'admin_init' , 'hh_add_custom_columns' );
add_action( 'admin_head' , 'hh_add_custom_columns_css' );
}
function hh_add_custom_columns () {
add_filter( 'manage_media_columns' , 'hh_custom_column_add' );
add_action( 'manage_media_custom_column' , 'hh_custom_column_value' , 10 , 2 );
add_filter( 'manage_link-manager_columns' , 'hh_custom_column_add' );
add_action( 'manage_link_custom_column' , 'column_value' , 10 , 2 );
add_action( 'manage_edit-link-categories_columns' , 'hh_custom_column_add' );
add_filter( 'manage_link_categories_custom_column' , 'column_return_value' , 10 , 3 );
foreach( get_taxonomies() as $taxonomy ) {
add_action( "manage_edit-${taxonomy}_columns" , 'hh_custom_column_add' );
add_filter( "manage_${taxonomy}_custom_column" , 'hh_custom_column_return_value' , 10 , 3 );
add_filter( "manage_edit-${taxonomy}_sortable_columns" , 'hh_custom_column_add' );
}
foreach( get_post_types() as $ptype ) {
add_action( "manage_edit-${ptype}_columns" , 'hh_custom_column_add' );
add_filter( "manage_${ptype}_posts_custom_column" , 'hh_custom_column_value' , 10 , 3 );
add_filter( "manage_edit-${ptype}_sortable_columns" , 'hh_custom_column_add' );
}
add_action( 'manage_users_columns' , 'hh_custom_column_add' );
add_filter( 'manage_users_custom_column' , 'hh_custom_column_return_value' , 10 , 3 );
add_filter( "manage_users_sortable_columns" , 'hh_custom_column_add' );
add_action( 'manage_edit-comments_columns' , 'hh_custom_column_add' );
add_action( 'manage_comments_custom_column' , 'hh_custom_column_value' , 10 , 2 );
add_filter( "manage_edit-comments_sortable_columns" , 'hh_custom_column_add' );
}
function hh_custom_column_add ( $columns ) {
$column_id = array( 'hh_id' => __( 'ID' ) );
$columns = array_slice( $columns, 0, 1, true ) + $column_id + array_slice( $columns, 1, NULL, true );
return $columns;
}
function hh_custom_column_value ( $column_name , $id ) {
if ( $column_name === 'hh_id' ) {
echo $id;
}
}
function hh_custom_column_return_value ( $value , $column_name , $id ) {
if ( $column_name === 'hh_id' ) {
$value .= $id;
}
return $value;
}
function hh_add_custom_columns_css() {
echo PHP_EOL . '<style type="text/css"> table.widefat th.column-hh_id { width: 50px; } </style>' . PHP_EOL;
}
/*-----------------------------------------------------------------------------------*/
/* Filter Tables and Sticky Headers */
/*-----------------------------------------------------------------------------------*/
if ( !function_exists( 'jquery_live_filter_wp_list_tables' ) ) {
function jquery_live_filter_wp_list_tables() {
$screen = get_current_screen();
$base = $screen->base;
$type = $screen->post_type;
$name = $screen->id;
if ( ( ( $base === 'edit' ) && ($type == 'page' || $type == 'post') ) || ( $name == 'plugins' ) || ( $name == 'snippets_page_snippet' ) ) {
if ( wp_script_is( 'jquery', 'done' ) ) {
?>
<script type="text/javascript">
(function(e,i){"use strict";function t(t,s){var d=this;d.$el=e(t),d.el=t,d.id=l++,d.$window=e(i),d.$document=e(document),d.$el.bind("destroyed",e.proxy(d.teardown,d)),d.$clonedHeader=null,d.$originalHeader=null,d.isSticky=!1,d.hasBeenSticky=!1,d.leftOffset=null,d.topOffset=null,d.init=function(){d.$el.each(function(){var i=e(this);i.css("padding",0),d.$originalHeader=e("thead:first",this),d.$clonedHeader=d.$originalHeader.clone(),i.trigger("clonedHeader."+o,[d.$clonedHeader]),d.$clonedHeader.addClass("tableFloatingHeader"),d.$clonedHeader.css("display","none"),d.$originalHeader.addClass("tableFloatingHeaderOriginal"),d.$originalHeader.after(d.$clonedHeader),d.$printStyle=e('<style type="text/css" media="print">.tableFloatingHeader{display:none !important;}.tableFloatingHeaderOriginal{position:static !important;}</style>'),e("head").append(d.$printStyle)}),d.setOptions(s),d.updateWidth(),d.toggleHeaders(),d.bind()},d.destroy=function(){d.$el.unbind("destroyed",d.teardown),d.teardown()},d.teardown=function(){d.isSticky&&d.$originalHeader.css("position","static"),e.removeData(d.el,"plugin_"+o),d.unbind(),d.$clonedHeader.remove(),d.$originalHeader.removeClass("tableFloatingHeaderOriginal"),d.$originalHeader.css("visibility","visible"),d.$printStyle.remove(),d.el=null,d.$el=null},d.bind=function(){d.$scrollableArea.on("scroll."+o,d.toggleHeaders),d.isWindowScrolling||(d.$window.on("scroll."+o+d.id,d.setPositionValues),d.$window.on("resize."+o+d.id,d.toggleHeaders)),d.$scrollableArea.on("resize."+o,d.toggleHeaders),d.$scrollableArea.on("resize."+o,d.updateWidth)},d.unbind=function(){d.$scrollableArea.off("."+o,d.toggleHeaders),d.isWindowScrolling||(d.$window.off("."+o+d.id,d.setPositionValues),d.$window.off("."+o+d.id,d.toggleHeaders)),d.$scrollableArea.off("."+o,d.updateWidth),d.$el.off("."+o),d.$el.find("*").off("."+o)},d.toggleHeaders=function(){d.$el&&d.$el.each(function(){var i,t=e(this),o=d.isWindowScrolling?isNaN(d.options.fixedOffset)?d.options.fixedOffset.outerHeight():d.options.fixedOffset:d.$scrollableArea.offset().top+(isNaN(d.options.fixedOffset)?0:d.options.fixedOffset),l=t.offset(),n=d.$scrollableArea.scrollTop()+o,s=d.$scrollableArea.scrollLeft(),a=d.isWindowScrolling?n>l.top:o>l.top,r=(d.isWindowScrolling?n:0)<l.top+t.height()-d.$clonedHeader.height()-(d.isWindowScrolling?0:o);a&&r?(i=l.left-s+d.options.leftOffset,d.$originalHeader.css({position:"fixed","margin-top":0,left:i,"z-index":1}),d.leftOffset=i,d.topOffset=o,d.$clonedHeader.css("display",""),d.isSticky||(d.isSticky=!0,d.updateWidth()),d.setPositionValues()):d.isSticky&&(d.$originalHeader.css("position","static"),d.$clonedHeader.css("display","none"),d.isSticky=!1,d.resetWidth(e("td,th",d.$clonedHeader),e("td,th",d.$originalHeader)))})},d.setPositionValues=function(){var e=d.$window.scrollTop(),i=d.$window.scrollLeft();!d.isSticky||0>e||e+d.$window.height()>d.$document.height()||0>i||i+d.$window.width()>d.$document.width()||d.$originalHeader.css({top:d.topOffset-(d.isWindowScrolling?0:e),left:d.leftOffset-(d.isWindowScrolling?0:i)})},d.updateWidth=function(){if(d.isSticky){d.$originalHeaderCells||(d.$originalHeaderCells=e("th,td",d.$originalHeader)),d.$clonedHeaderCells||(d.$clonedHeaderCells=e("th,td",d.$clonedHeader));var i=d.getWidth(d.$clonedHeaderCells);d.setWidth(i,d.$clonedHeaderCells,d.$originalHeaderCells),d.$originalHeader.css("width",d.$clonedHeader.width())}},d.getWidth=function(t){var o=[];return t.each(function(t){var l,n=e(this);if("border-box"===n.css("box-sizing"))l=n.outerWidth();else{var s=e("th",d.$originalHeader);if("collapse"===s.css("border-collapse"))if(i.getComputedStyle)l=parseFloat(i.getComputedStyle(this,null).width);else{var a=parseFloat(n.css("padding-left")),r=parseFloat(n.css("padding-right")),c=parseFloat(n.css("border-width"));l=n.outerWidth()-a-r-c}else l=n.width()}o[t]=l}),o},d.setWidth=function(e,i,t){i.each(function(i){var o=e[i];t.eq(i).css({"min-width":o,"max-width":o})})},d.resetWidth=function(i,t){i.each(function(i){var o=e(this);t.eq(i).css({"min-width":o.css("min-width"),"max-width":o.css("max-width")})})},d.setOptions=function(t){d.options=e.extend({},n,t),d.$scrollableArea=e(d.options.scrollableArea),d.isWindowScrolling=d.$scrollableArea[0]===i},d.updateOptions=function(e){d.setOptions(e),d.unbind(),d.bind(),d.updateWidth(),d.toggleHeaders()},d.init()}var o="stickyTableHeaders",l=0,n={fixedOffset:0,leftOffset:0,scrollableArea:i};e.fn[o]=function(i){return this.each(function(){var l=e.data(this,"plugin_"+o);l?"string"==typeof i?l[i].apply(l):l.updateOptions(i):"destroy"!==i&&e.data(this,"plugin_"+o,new t(this,i))})}})(jQuery,window);
</script>
<script type="text/javascript">
!function(i){i.fn.bindWithDelay=function(n,u,t,e,d){return i.isFunction(u)&&(d=e,e=t,t=u,u=void 0),t.guid=t.guid||i.guid&&i.guid++,this.each(function(){function l(){var n=i.extend(!0,{},arguments[0]),u=this,l=function(){o=null,t.apply(u,[n])};d||(clearTimeout(o),o=null),o||(o=setTimeout(l,e))}var o=null;l.guid=t.guid,i(this).bind(n,u,l)})}}(jQuery);
</script>
<script type="text/javascript">
!function(e){var t=e.fn.jquery.split("."),i=parseFloat(t[0]),a=parseFloat(t[1]);e.expr[":"].filterTableFind=2>i&&8>a?function(t,i,a){return e(t).text().toUpperCase().indexOf(a[3].toUpperCase())>=0}:jQuery.expr.createPseudo(function(t){return function(i){return e(i).text().toUpperCase().indexOf(t.toUpperCase())>=0}}),e.fn.filterTable=function(t){var i={autofocus:!1,callback:null,containerClass:"filter-table",containerTag:"p",hideTFootOnFilter:!1,highlightClass:"alt",inputSelector:null,inputName:"",inputType:"search",label:"Filter:",minRows:8,placeholder:"search this table",quickList:[],quickListClass:"quick",quickListGroupTag:"",quickListTag:"a",visibleClass:"visible"},a=function(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},l=e.extend({},i,t),n=function(e,t){var i=e.find("tbody");""===t?(i.find("tr").show().addClass(l.visibleClass),i.find("td").removeClass(l.highlightClass),l.hideTFootOnFilter&&e.find("tfoot").show()):(i.find("tr").hide().removeClass(l.visibleClass),l.hideTFootOnFilter&&e.find("tfoot").hide(),i.find("td").removeClass(l.highlightClass).filter(':filterTableFind("'+t.replace(/(['"])/g,"\\$1")+'")').addClass(l.highlightClass).closest("tr").show().addClass(l.visibleClass)),l.callback&&l.callback(t,e)};return this.each(function(){var t=e(this),i=t.find("tbody"),s=null,r=null,o=null,c=!0;"TABLE"===t[0].nodeName&&i.length>0&&(0===l.minRows||l.minRows>0&&i.find("tr").length>l.minRows)&&!t.prev().hasClass(l.containerClass)&&(l.inputSelector&&1===e(l.inputSelector).length?(o=e(l.inputSelector),s=o.parent(),c=!1):(s=e("<"+l.containerTag+" />"),""!==l.containerClass&&s.addClass(l.containerClass),s.prepend(l.label+" "),o=e('<input type="'+l.inputType+'" placeholder="'+l.placeholder+'" name="'+l.inputName+'" />')),l.autofocus&&o.attr("autofocus",!0),e.fn.bindWithDelay?o.bindWithDelay("keyup",function(){n(t,e(this).val())},200):o.bind("keyup",function(){n(t,e(this).val())}),o.bind("click search",function(){n(t,e(this).val())}),c&&s.append(o),l.quickList.length>0&&(r=l.quickListGroupTag?e("<"+l.quickListGroupTag+" />"):s,e.each(l.quickList,function(t,i){var n=e("<"+l.quickListTag+' class="'+l.quickListClass+'" />');n.text(a(i)),"A"===n[0].nodeName&&n.attr("href","#"),n.bind("click",function(e){e.preventDefault(),o.val(i).focus().trigger("click")}),r.append(n)}),r!==s&&s.append(r)),c&&t.before(s))})}}(jQuery);
</script>
<style type="text/css">
.tableFloatingHeaderOriginal { background-color: #ffffff; }
</style>
<style type="text/css">
.filter-table .quick { margin-left: 0.5em; font-size: 0.8em; text-decoration: none; }
.fitler-table .quick:hover { text-decoration: underline; }
td.alt { background-color: #ffc; background-color: rgba(255, 255, 0, 0.2); }
</style>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('table').stickyTableHeaders({fixedOffset: 50 });
$('table.wp-list-table').filterTable({
inputSelector: '.search-box input[type=search][name=s]',
autofocus: true,
placeholder: 'What Are You Looking For?',
quickListTag: 'li',
hideTFootOnFilter: true
});
});
</script>
<?php
} // wp_script_is
} // conditionals
} // function
add_action( 'admin_print_footer_scripts', 'jquery_live_filter_wp_list_tables', 999 );
} // exists
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment