"কুইক এডিট" স্ক্রিনে কাস্টম মেটা বক্সটি কীভাবে প্রদর্শিত করবেন?


22

আমি উভয় পৃষ্ঠা এবং পোস্টে ওয়ার্ডপ্রেস সম্পাদনা উইন্ডোতে একটি কাস্টম মেটা বক্স যুক্ত করতে add_meta_box () ব্যবহার করেছি।

আমি কীভাবে এই মেটা বক্সটি "দ্রুত সম্পাদনা" স্ক্রিনে প্রদর্শন করতে পারি?

আদর্শভাবে, আমি এটি বিভাগের নির্বাচকটির ডানদিকে প্রদর্শিত হতে চাই।


আমি এই পোস্টে এটি করার আরও সহজ উপায় দিয়ে
উত্তরও দিয়েছি

উত্তর:


22

এটি করার কোনও সহজ উপায় নেই বলে মনে হচ্ছে, আপনাকে অবশ্যই সমস্ত কোড যুক্ত করতে হবে। inline_edit_row(), দ্রুত সম্পাদনা এবং বাল্ক সম্পাদনা পর্দা আঁকতে যে ফাংশনটি মনে হয়, তার মধ্যে কেবলমাত্র একটি ক্রিয়া রয়েছে যা আপনি হুক করতে পারেন: quick_edit_custom_boxবাbulk_edit_custom_box । এটি সমস্ত নন-কোর কলামের জন্য wp_manage_posts_columns()ফিরে আসে যা ফিরে আসে। কিছু ফিল্টার রয়েছে যা আপনি কলাম যুক্ত করতে ব্যবহার করতে পারেন, উদাহরণস্বরূপ manage_posts_columns। দুর্ভাগ্যক্রমে, এই ফাংশনটি পোস্ট টেবিলের কলাম শিরোনামগুলি সংজ্ঞায়িত করে, তাই print_column_headers()তাদের মুদ্রণের আগে আপনাকে আবার এটি সরিয়ে ফেলা উচিত । এই কাজ করা যেতে পারে get_column_headers()ফাংশন, সঙ্গে ফিল্টার । সম্পাদনা পোস্টের পর্দার জন্য স্ক্রিন আইডি।manage_[screen_id]_headersedit-post

সব মিলে, এটি কিছু কোড যুক্ত করতে নীচের মত একটি হ্যাক দেয়। আপনি কোথায় ফর্ম জমা দিতে পারবেন তা সন্ধান করা (বর্তমানে) পাঠকের কাছে অনুশীলন হিসাবে রেখে গেছে left

// Add a dummy column for the `posts` post type    
add_filter('manage_posts_columns', 'add_dummy_column', 10, 2);
function add_dummy_column($posts_columns, $post_type)
{
    $posts_columns['dummy'] = 'Dummy column';
    return $posts_columns;
}
// But remove it again on the edit screen (other screens to?)
add_filter('manage_edit-post_columns', 'remove_dummy_column');
function remove_dummy_column($posts_columns)
{
    unset($posts_columns['dummy']);
    return $posts_columns;
}

// Add our text to the quick edit box
add_action('quick_edit_custom_box', 'on_quick_edit_custom_box', 10, 2);
function on_quick_edit_custom_box($column_name, $post_type)
{
    if ('dummy' == $column_name) {
        echo 'Extra content in the quick edit box';
    }
}

// Add our text to the bulk edit box
add_action('bulk_edit_custom_box', 'on_bulk_edit_custom_box', 10, 2);
function on_bulk_edit_custom_box($column_name, $post_type)
{
    if ('dummy' == $column_name) {
        echo 'Extra content in the bulk edit box';
    }
}

ধন্যবাদ জানু। আমি স্রেফ কিছুটা অনুরূপ প্রশ্ন জিজ্ঞাসা করেছি যদি আপনি এটি পরীক্ষা করে দেখার মতো সদয় হন: ওয়ার্ডপ্রেস.স্ট্যাকেক্সেঞ্জার
স্কট বি

আমি এটি +1 করেছি। সুতরাং বিস্মিত হবেন না যে এটি Q. এর রিপ পয়েন্টগুলির অর্ধেকেরও বেশি পেয়েছে স্কট থেকে চমৎকার মন্তব্য :)
কায়সার

খুব সহায়ক, জানু। ফলো-আপ প্রশ্ন: on_bulk_edit_custom_boxক্ষেত্রগুলি পুনরায় তৈরি করতে আপনি কীভাবে বর্তমান পোস্টের ডেটাতে প্রবেশ করতে পারবেন ? global $postকাজ মনে হচ্ছে না।
Geert

-1

উপরের উত্তরগুলি ডেটা সংরক্ষণের একটি নির্দিষ্ট উপায় সরবরাহ করে না। videoআমি ওয়ার্ডপ্রেস বাল্ক সম্পাদনা প্লাগইন কাস্টম বাল্ক / দ্রুত সম্পাদনা লেখার আগে কাস্টম পোস্ট প্রকারটি ব্যবহার করে নিম্নলিখিত কোডটি একটি উত্পাদন ব্যবস্থা থেকে বেরিয়ে আসে ।

ফাইল quick_edit.js

// @ref http://rachelcarden.com/2012/03/manage-wordpress-posts-using-bulk-edit-and-quick-edit/
(function($) {
    // we create a copy of the WP inline edit post function
    var $wp_inline_edit = inlineEditPost.edit;
    // and then we overwrite the function with our own code
    inlineEditPost.edit = function( id ) {
        // "call" the original WP edit function
        // we don't want to leave WordPress hanging
        $wp_inline_edit.apply( this, arguments );

        // now we take care of our business

        // get the post ID
        var $post_id = 0;
        if ( typeof( id ) == 'object' )
            $post_id = parseInt( this.getId( id ) );

        if ( $post_id > 0 ) {
            // define the edit row
            var $edit_row = $( '#edit-' + $post_id );
            var $post_row = $( '#post-' + $post_id );

            // get the data
            var $additional_copies = $( '.column-additional_copies', $post_row ).html();
            var $main_credits      = $( '.column-main_credits', $post_row ).html();

            // populate the data
            $( ':input[name="additional_copies"]', $edit_row ).val( $additional_copies );
            $( ':input[name="main_credits"]', $edit_row ).val( $main_credits );
        }
    };

    $( '#bulk_edit' ).live( 'click', function() {
        // define the bulk edit row
        var $bulk_row = $( '#bulk-edit' );

        // get the selected post ids that are being edited
        var $post_ids = new Array();
        $bulk_row.find( '#bulk-titles' ).children().each( function() {
            $post_ids.push( $( this ).attr( 'id' ).replace( /^(ttle)/i, '' ) );
        });

        // get the data
        var $additional_copies = $bulk_row.find( 'textarea[name="additional_copies"]' ).val();
        var $main_credits      = $bulk_row.find( 'textarea[name="main_credits"]' ).val();

        // save the data
        $.ajax({
            url: ajaxurl, // this is a variable that WordPress has already defined for us
            type: 'POST',
            async: false,
            cache: false,
            data: {
                action: 'save_bulk_edit_video', // this is the name of our WP AJAX function that we'll set up next
                post_ids: $post_ids, // and these are the 2 parameters we're passing to our function
                additional_copies: $additional_copies,
                main_credits: $main_credits
            }
        });
    });
})(jQuery);

ফাইল video-quick-edit.php

<?php
/**
 *  Quick Edit and Bulk Edit helper for Media Burn video records
 *
 *  @author Michael Cannon <mc@aihr.us>
 *  @ref http://rachelcarden.com/2012/03/manage-wordpress-posts-using-bulk-edit-and-quick-edit/
 */

add_action( 'bulk_edit_custom_box', 'quick_edit_custom_box_video', 10, 2 );
add_action( 'quick_edit_custom_box', 'quick_edit_custom_box_video', 10, 2 );

function quick_edit_custom_box_video( $column_name, $post_type ) {
    $slug = 'video';
    if ( $slug !== $post_type )
        return;

    if ( ! in_array( $column_name, array( 'additional_copies', 'main_credits' ) ) )
        return;

    static $printNonce = true;
    if ( $printNonce ) {
        $printNonce = false;
        wp_nonce_field( plugin_basename( __FILE__ ), 'video_edit_nonce' );
    }

?>
    <fieldset class="inline-edit-col-right inline-edit-video">
      <div class="inline-edit-col inline-edit-<?php echo $column_name ?>">
        <label class="inline-edit-group">
        <?php
    switch ( $column_name ) {
    case 'additional_copies':
?>
            <span class="title">Additional Copies</span>
            <textarea cols="22" rows="1" name="additional_copies" autocomplete="off"></textarea>
            <?php
        break;
    case 'main_credits':
?>
            <span class="title">Main Credits</span>
            <textarea cols="22" rows="1" name="main_credits" autocomplete="off"></textarea>
            <?php
        break;
    }
?>
        </label>
      </div>
    </fieldset>
    <?php
}


add_action( 'save_post', 'save_video_meta' );

function save_video_meta( $post_id ) {
    // TODO make $slug static
    $slug = 'video';
    if ( $slug !== $_POST['post_type'] )
        return;

    if ( !current_user_can( 'edit_post', $post_id ) )
        return;

    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;

    if ( isset( $post->post_type ) && 'revision' == $post->post_type )
        return;

    $_POST += array( "{$slug}_edit_nonce" => '' );
    if ( !wp_verify_nonce( $_POST["{$slug}_edit_nonce"], plugin_basename( __FILE__ ) ) )
        return;

    if ( isset( $_REQUEST['additional_copies'] ) )
        update_post_meta( $post_id, 'additional_copies', wp_kses_post( $_REQUEST['additional_copies'] ) );

    if ( isset( $_REQUEST['main_credits'] ) )
        update_post_meta( $post_id, 'main_credits', wp_kses_post( $_REQUEST['main_credits'] ) );
}


add_action( 'admin_print_scripts-edit.php', 'admin_edit_video_foot' );
function admin_edit_video_foot() {
    $slug = 'video';
    // load only when editing a video
    if ( ( isset( $_GET['page'] ) && $slug == $_GET['page'] )
        || ( isset( $_GET['post_type'] ) && $slug == $_GET['post_type'] ) ) {
        wp_enqueue_script( 'admin-quick-edit-video', get_template_directory_uri() . '/functions/user/custom/fitv/quick_edit.js', array( 'jquery', 'inline-edit-post' ), '', true );
    }
}


add_action( 'wp_ajax_save_bulk_edit_video', 'save_bulk_edit_video' );
function save_bulk_edit_video() {
    $post_ids          = ( ! empty( $_POST[ 'post_ids' ] ) ) ? $_POST[ 'post_ids' ] : array();
    $additional_copies = ( ! empty( $_POST[ 'additional_copies' ] ) ) ? wp_kses_post( $_POST[ 'additional_copies' ] ) : null;
    $main_credits      = ( ! empty( $_POST[ 'main_credits' ] ) ) ? wp_kses_post( $_POST[ 'main_credits' ] ) : null;

    if ( ! empty( $post_ids ) && is_array( $post_ids ) ) {
        foreach ( $post_ids as $post_id ) {
            update_post_meta( $post_id, 'additional_copies', $additional_copies );
            update_post_meta( $post_id, 'main_credits', $main_credits );
        }
    }

    die();
}


?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.