0

I am making one custom slider where admin can add slider image from back end. I am doing it with the help of custom post type.

function.php

// Custom Post types for Feature project on home page 
   add_action('init', 'create_feature');
     function create_feature() {
       $feature_args = array(
          'labels' => array(
           'name' => __( 'Feature Project' ),
           'singular_name' => __( 'Feature Project' ),
           'add_new' => __( 'Add New Feature Project' ),
           'add_new_item' => __( 'Add New Feature Project' ),
           'edit_item' => __( 'Edit Feature Project' ),
           'new_item' => __( 'Add New Feature Project' ),
           'view_item' => __( 'View Feature Project' ),
           'search_items' => __( 'Search Feature Project' ),
           'not_found' => __( 'No feature project found' ),
           'not_found_in_trash' => __( 'No feature project found in trash' )
         ),
       'public' => true,
       'show_ui' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'rewrite' => true,
       'menu_position' => 20,
       'supports' => array('title', 'editor', 'thumbnail')
     );
  register_post_type('feature',$feature_args);
}
add_filter("manage_feature_edit_columns", "feature_edit_columns");

function feature_edit_columns($feature_columns){
   $feature_columns = array(
      "cb" => "<input type=\"checkbox\" />",
      "id" => "ID",
      "title" => "Title",
   );
  return $feature_columns;
}



add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add()
{
    add_meta_box( 'my-meta-box-id', 'Link to Project', 'cd_meta_box_cb', 'feature', 'normal', 'high' );
}

function cd_meta_box_cb( $post )
{
    $url = get_post_meta($post->ID, 'url', true);
    wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' ); ?>

    <p>
        <label for="url">Project url</label>
        <input type="text" name="url" id="url" value="<?php echo $url; ?>" style="width:350px" />
    </p>

    <?php   
}

add_action( 'save_post', 'cd_meta_box_save' );
function cd_meta_box_save( $post_id )
{
    // Bail if we're doing an auto save
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;

    // if our nonce isn't there, or we can't verify it, bail
    if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;

    // if our current user can't edit this post, bail
    if( !current_user_can( 'edit_post' ) ) return;

    // now we can actually save the data
    $allowed = array( 
        'a' => array( // on allow a tags
            'href' => array() // and those anchors can only have href attribute
        )
    );

    // Probably a good idea to make sure your data is set
    if( isset( $_POST['url'] ) )
        update_post_meta( $post_id, 'url', wp_kses( $_POST['url'], $allowed ) );
}

After above code, I get output like enter image description here

Here I want something like ID after Title. So that admin can be able to set slide Image order from that ID.

Can anyone tell me how can I do that ?

1

If the purpose of the ID is just to set the order of the slides you are better off using the order attribute.

Add page-attributes to the array for the supports argument in $feature_args Then in your loop you can specify &orderby=menu_order&order=ASC

Then you can show it as a column you can refer to this answer

0

Hre is the code for adding ID column in feature post type.

add_filter( 'manage_edit-feature_columns', 'set_custom_edit_feature_columns' );
add_action( 'manage_feature_posts_custom_column' , 'custom_feature_column', 10, 2 );

function set_custom_edit_feature_columns($columns) {
    unset( $columns['date'] );
    $columns['ID'] = __( 'ID', 'twentyfourteen' );
    return $columns;
}

function custom_feature_column( $column, $post_id ) {
    switch ( $column ) {
        case 'ID' :
        echo $post_id;
        break;
    }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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