“Hızlı Düzenleme” ekranında özel bir meta kutusu nasıl gösterilir?


22

Hem sayfalarda hem de yazılarda WordPress düzenleme penceresine özel bir meta kutusu eklemek için add_meta_box () kullandım.

Bu meta kutunun "Hızlı Düzenleme" ekranında da gösterilmesini nasıl sağlayabilirim?

İdeal olarak, Kategoriler seçicisinin hemen sağında görünmesini istiyorum.


Bunu da burada bu yazıya yapmanın daha basit bir yolu ile cevapladım wordpress.stackexchange.com/questions/7291/…
jaredwilli

Yanıtlar:


22

Bunu yapmanın kolay bir yolu yok gibi görünüyor, tüm kodu kendiniz eklemelisiniz. inline_edit_row()Hızlı Düzenleme ve Toplu Düzenleme ekranlarını çizen fonksiyonun, bağlanabileceğiniz tek bir işlemi olduğu görülüyor: quick_edit_custom_boxveyabulk_edit_custom_box . Dönen tüm çekirdek olmayan sütunlar için çağrılır wp_manage_posts_columns(). Örneğin sütun eklemek için kullanabileceğiniz bazı filtreler vardır manage_posts_columns. Ne yazık ki, bu işlev posta tablasının sütun başlıklarını tanımlar, bu yüzden print_column_headers()yazdırmadan önce tekrar çıkarmanız gerekir. Bu yapılabilir get_column_headers()ile, fonksiyonu filtresi . Mesajları Düzenle ekranının ekran kimliğidir.manage_[screen_id]_headersedit-post

Hep birlikte, bu bazı kod eklemek için aşağıdaki gibi bir kesmek verir. Form gönderimini nerede yapabileceğinizi bulmak (şu anda) okuyucuya bir alıştırma olarak bırakılmıştır.

// 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';
    }
}

Teşekkürler Ocak. Sadece kontrol etmek için yeterli olup olmadığını biraz benzer bir soru sordum: wordpress.stackexchange.com/questions/3531/…
Scott B

Ben sadece + 1'ledim. Öyleyse merak ediyorum, Q’nun rep puanlarının yarısından daha fazlası var. Scott’tan güzel bir yorum :)
kaiser

Çok yararlı, Ocak. Takip eden soru: on_bulk_edit_custom_boxAlanları doldurmak için mevcut gönderinin içerisindeki verilere nasıl erişirsiniz ? global $postişe görünmüyor
Geert

-1

Yukarıdaki cevaplar veriyi kaydetmenin kesin bir yolunu sağlamıyor. Aşağıdaki kod video, WordPress toplu düzenleme eklentisini Özel Toplu / Hızlı Düzenleme yazmadan önce özel yazı türünü kullanan bir üretim sisteminden gelir .

Dosya 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);

Dosya 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();
}


?>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.