{"id":2124897,"date":"2011-06-10T06:18:18","date_gmt":"2011-06-10T06:18:18","guid":{"rendered":"https:\/\/wordpress.org\/support\/topic\/admin-column-sorting\/"},"modified":"2016-08-20T00:49:39","modified_gmt":"2016-08-20T00:49:39","slug":"admin-column-sorting","status":"closed","type":"topic","link":"https:\/\/wordpress.org\/support\/topic\/admin-column-sorting\/","title":{"rendered":"Admin Column Sorting"},"content":{"rendered":"<p><strong>Admin Column Sorting for a custom field in a Custom Post Type.<\/strong><\/p>\n<p>I spent most of the day on this.. but couldn&#8217;t find all of it together in one place. Finally got all the pieces together so it was working for me. Sharing in case it helps anyone.<\/p>\n<p>This is for a Custom Post Type called &#8220;concerts&#8221; (already registered). The custom field getting a new column is &#8220;city&#8221;. Here are the pieces, all in functions.php:<br \/>\n&#8211; Column\/Header<br \/>\n&#8211; Content<br \/>\n&#8211; Sorting: Headers<br \/>\n&#8211; Sorting: OrderBy (*this was hard to find, thanks Scribu -and- TS!)<\/p>\n<pre><code>\/*\n * ADMIN COLUMN - HEADERS\n *\/\nadd_filter(&#039;manage_edit-concerts_columns&#039;, &#039;add_new_concerts_columns&#039;);\nfunction add_new_concerts_columns($concerts_columns) {\n\t$new_columns[&#039;cb&#039;] = &#039;&lt;input type=&quot;checkbox&quot; \/&gt;&#039;;\n\t$new_columns[&#039;title&#039;] = _x(&#039;Club&#039;, &#039;column name&#039;);\n\t$new_columns[&#039;city&#039;] = __(&#039;City&#039;);\n\treturn $new_columns;\n}\n\n\/*\n * ADMIN COLUMN - CONTENT\n *\/\nadd_action(&#039;manage_concerts_posts_custom_column&#039;, &#039;manage_concerts_columns&#039;, 10, 2);\nfunction manage_concerts_columns($column_name, $id) {\n\tglobal $post;\n\tswitch ($column_name) {\n\t\tcase &#039;city&#039;:\n\t\t\techo get_post_meta( $post-&gt;ID , &#039;city&#039; , true );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t} \/\/ end switch\n}\n\n\/*\n * ADMIN COLUMN - SORTING - MAKE HEADERS SORTABLE\n * https:\/\/gist.github.com\/906872\n *\/\nadd_filter(&quot;manage_edit-concerts_sortable_columns&quot;, &#039;concerts_sort&#039;);\nfunction concerts_sort($columns) {\n\t$custom = array(\n\t\t&#039;concertdate&#039; \t=&gt; &#039;concertdate&#039;,\n\t\t&#039;city&#039; \t\t=&gt; &#039;city&#039;\n\t);\n\treturn wp_parse_args($custom, $columns);\n\t\/* or this way\n\t\t$columns[&#039;concertdate&#039;] = &#039;concertdate&#039;;\n\t\t$columns[&#039;city&#039;] = &#039;city&#039;;\n\t\treturn $columns;\n\t*\/\n}\n\n\/*\n * ADMIN COLUMN - SORTING - ORDERBY\n * http:\/\/scribu.net\/wordpress\/custom-sortable-columns.html#comment-4732\n *\/\nadd_filter( &#039;request&#039;, &#039;city_column_orderby&#039; );\nfunction city_column_orderby( $vars ) {\n\tif ( isset( $vars[&#039;orderby&#039;] ) &amp;&amp; &#039;city&#039; == $vars[&#039;orderby&#039;] ) {\n\t\t$vars = array_merge( $vars, array(\n\t\t\t&#039;meta_key&#039; =&gt; &#039;city&#039;,\n\t\t\t\/\/&#039;orderby&#039; =&gt; &#039;meta_value_num&#039;, \/\/ does not work\n\t\t\t&#039;orderby&#039; =&gt; &#039;meta_value&#039;\n\t\t\t\/\/&#039;order&#039; =&gt; &#039;asc&#039; \/\/ don&#039;t use this; blocks toggle UI\n\t\t) );\n\t}\n\treturn $vars;\n}<\/code><\/pre>\n","protected":false},"template":"","class_list":["post-2124897","topic","type-topic","status-closed","hentry","topic-tag-columns","topic-tag-orderby","topic-tag-sortable","topic-tag-sorting"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/2124897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic"}],"about":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/2124897\/revisions"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/media?parent=2124897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}