7

I created a custom post type, two custom taxonomies and displayed them in the 'manage post section, but I'm getting the following warning:

Warning: Missing argument 2 for manage_posts_custom_column() in /home/aleche23/alexchen.info/wp-content/themes/techozoic-fluid/functions/custom-post-types.php on line 95

Picture:

enter image description here

<?php

/**
 * Create the Blocks custom post type and the Sections custom taxonomy
 */
add_action('init', 'create_post_type');

        // Register custom post types and custom taxonomies
        function create_post_type() {
            register_post_type('blocks',array(
                'labels' => array(
                    'name' => __( 'Blocks' ),
                    'singular_name' => __( 'Block' ),
                    'add_new_item' => 'Add New Block',
                    'edit_item' => 'Edit Block',
                    'new_item' => 'New Block',
                    'search_items' => 'Search Block',
                    'not_found' => 'No Blocks found',
                    'not_found_in_trash' => 'No Blocks found in trash',
                ),
                'public' => true,
                'hierarchical' => false,
                'taxonomies' => array( 'section'),
                'supports' => array('title','editor','thumbnail','custom-fields'),
                'rewrite' => array('slug'=>'blocks','with_front'=>false),
                'menu_position' => 50,
            ));
            register_taxonomy('location','blocks',array(
                'hierarchical' => true,
                'labels' => array(
                    'name' => __( 'Locations' ),
                    'singular_name' => __( 'Location' ),
                    'add_new_item' => 'Add New Location',
                    'edit_item' => 'Edit Location',
                    'new_item' => 'New Location',
                    'search_items' => 'Search Location',
                    'not_found' => 'No Location found',
                    'not_found_in_trash' => 'No Locations found in trash',
                    'all_items' => __( 'All Locations' ),
                ),
                'query_var' => true,
                'rewrite' => array( 'slug' => 'location' ),
            ));
            register_taxonomy('section','blocks',array(
                'hierarchical' => true,
                'labels' => array(
                    'name' => __( 'Sections' ),
                    'singular_name' => __( 'Section' ),
                    'add_new_item' => 'Add New Section',
                    'edit_item' => 'Edit Section',
                    'new_item' => 'New Section',
                    'search_items' => 'Search Section',
                    'not_found' => 'No Sections found',
                    'not_found_in_trash' => 'No Sectionss found in trash',
                    'all_items' => __( 'All Sections' ),
                ),
                'query_var' => true,
                'rewrite' => array( 'slug' => 'section' ),
            ));
            // Add initial terms
            if (!get_option('yoursite-blocks-initialized')) {
                $terms = array(
                    'Intro',
                    'Tagline',
                    'Mainbar',
                    'Sidebar',
                    'Featured',
                    'Content',
                );
                foreach($terms as $term) {
                    if (!get_term_by('name',$term,'section')) {
                        wp_insert_term($term, 'section');
                    }
                }
                update_option('yoursite-blocks-initialized',true);
            }
        }
        // Arrange the position of elements in the table
            add_filter('manage_blocks_posts_columns', 'manage_blocks_posts_columns');

        function manage_blocks_posts_columns($columns) {
            $columns = array(
                'cb' => '<input type="checkbox" />',
                'title' => 'Name',
                'location_column' => 'Location',
                'section_column' => 'Section',
                'author' => 'Author',
                'date' => 'Date',
            );
            return $columns;
        }
        // Verify that we are indeed working with only the custom post type and use a switch statement to test against the column
            add_filter('manage_posts_custom_column', 'manage_posts_custom_column');

        function manage_posts_custom_column( $column,$post_id ) {
            global $typenow;
            if ($typenow=='blocks') {
                $location_taxonomy = 'location';
                $section_taxonomy = 'section';
                switch ($column) {
                case 'location_column':
                    $location_column = get_the_terms($post_id,$location_taxonomy);
                    if (is_array($location_column)) {
                        foreach($location_column as $key => $location) {
                            $edit_link = get_term_link($location,$location_taxonomy);
                            $location_column[$key] = '<a href="'.$edit_link.'">' . $location->name . '</a>';
                        }
                        echo implode(' | ',$location_column);
                    }
                    break;
                case 'section_column':
                    $section_column = get_the_terms($post_id,$section_taxonomy);
                    if (is_array($section_column)) {
                        foreach($section_column as $key => $section) {
                            $edit_link = get_term_link($section,$section_taxonomy);
                            $section_column[$key] = '<a href="'.$edit_link.'">' . $section->name . '</a>';
                        }
                        echo implode(' | ',$section_column);
                    }
                    break;
                }
            }
        }
        // Output multiple taxonomy filters
            add_action('restrict_manage_posts' ,'restrict_manage_posts');

        function restrict_manage_posts() {

            // Only display these taxonomy filters on desired custom post_type listings
            global $typenow;
            if ($typenow == 'blocks') {

                // Create an array of taxonomy slugs you want to filter by - if you want to retrieve all taxonomies, could use get_taxonomies() to build the list
                $filters = array('location', 'section');

                foreach ($filters as $tax_slug) {
                    // Retrieve the taxonomy object
                    $tax_obj = get_taxonomy($tax_slug);
                    $tax_name = $tax_obj->labels->name;
                    // Retrieve array of term objects per taxonomy
                    $terms = get_terms($tax_slug);

                    // Output html for taxonomy dropdown filter
                    echo "<select name='$tax_slug' id='$tax_slug' class='postform'>";
                    echo "<option value=''>Show All $tax_name</option>";
                    foreach ($terms as $term) {
                        // Output each select option line, check against the last $_GET to show the current option selected
                        echo '<option value='. $term->slug, $_GET[$tax_slug] == $term->slug ? ' selected="selected"' : '','>' . $term->name .' (' . $term->count .')</option>';
                    }
                    echo "</select>";
                }
            }
        }

Which argument I am missing?

1
  • Why did I get 5 down-voted questions in a row? I'm having a period of bad luck?
    – wyc
    May 13, 2011 at 4:38

1 Answer 1

12

Change line 93 from

add_filter('manage_posts_custom_column', 'manage_posts_custom_column');

to

add_filter('manage_posts_custom_column', 'manage_posts_custom_column', 10, 2);

The fourth argument specifies how many arguments the function manage_posts_custom_column accepts (one by default).

Codex: add_filter()

2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.