Add "Excerpt" in "Quick edit"

时间:2018-01-18 作者:jnrmy

我有很多帖子想编辑摘录。但是,我不需要进入编辑页面,而是希望使用“快速编辑”功能。

如何在快速编辑中添加摘录?

PS:我知道有一个插件可以实现这一点,但我的网站有一个自定义插件,所以如果我可以在其中添加这个插件,那就太酷了。

编辑:我不想使用插件,因为当有可能在某处轻松添加代码来完成我想做的事情时,我并不真正喜欢使用插件。另外,我所说的“自定义批量/快速编辑”插件还有许多我不会使用的功能。

1 个回复
SO网友:slappy-x

我也在寻找这个选项/功能。我偶然发现this guys 我相信这个解释回答了大部分问题。我正在实现这一点,所以我不能说作为wordpress noob(不是php!)有多准确,我知道这是一个自定义框,但您可以使用the_excerpt() fn或来自$post对象-etc。

因此,要在“快速编辑”部分提供我们想要的选项,我们需要首先将其作为“自定义”列添加到帖子/页面列表视图中。

/*
 * New columns
 */
add_filter(\'manage_post_posts_columns\', \'misha_featured_columns\');
// the above hook will add columns only for default \'post\' post type, for CPT:
// manage_{POST TYPE NAME}_posts_columns
function misha_price_and_featured_columns( $column_array ) {
    $column_array[\'featured\'] = \'Featured product\';
    return $column_array;
}

/*
 * Populate our new columns with data
 */
add_action(\'manage_posts_custom_column\', \'misha_populate_column\', 10, 2);
function misha_populate_column( $column_name, $id ) {
    switch( $column_name ) :

        case \'featured\': {
            if( get_post_meta($id,\'product_featured\',true) == \'on\') 
                echo \'Yes\';
            break;
        }
    endswitch;

}
然后我们可以将其添加到“快速编辑”部分。

/*
 * quick_edit_custom_box allows to add HTML in Quick Edit
 * Please note: it files for EACH column, so it is similar to manage_posts_custom_column
 */
add_action(\'quick_edit_custom_box\',  \'misha_quick_edit_fields\', 10, 2);

function misha_quick_edit_fields( $column_name, $post_type ) {

    switch( $column_name ) :

        case \'featured\': {

            echo \'<fieldset><label class="alignleft">
                    <input type="checkbox" name="featured">
                    <span class="checkbox-title">Featured product</span>
                </label></fieldset>\';

            break;

        }

    endswitch;

}
我们还需要一些代码来连接到save post,以便更新元数据。

/*
 * Quick Edit Save
 */
add_action( \'save_post\', \'misha_quick_edit_save\' );

function misha_quick_edit_save( $post_id ){

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

    if ( !wp_verify_nonce( $_POST[\'misha_nonce\'], \'misha_q_edit_nonce\' ) ) {
        return;
    }

    if ( isset( $_POST[\'featured\'] ) ) {
        update_post_meta( $post_id, \'product_featured\', \'on\' );
    } else {
        update_post_meta( $post_id, \'product_featured\', \'\' );
    }

}
最后,加载页面后,需要一些JavaScript(他使用jQuery)来填充字段数据。他将其放置在单独的文件中,并使用wp\\U排队加载:

add_action( \'admin_enqueue_scripts\', \'misha_enqueue_quick_edit_population\' );
function misha_enqueue_quick_edit_population( $pagehook ) {

    // do nothing if we are not on the target pages
    if ( \'edit.php\' != $pagehook ) {
        return;
    }

    wp_enqueue_script( \'populatequickedit\', get_stylesheet_directory_uri() . \'/populate.js\', array( \'jquery\' ) );

}
JavaScript文件:

jQuery(function($){

    var wp_inline_edit_function = inlineEditPost.edit;

    inlineEditPost.edit = function( post_id ) {

        wp_inline_edit_function.apply( this, arguments );

        var id = 0;
        if ( typeof( post_id ) == \'object\' ) { // if it is object, get the ID number
            id = parseInt( this.getId( post_id ) );
        }

        if ( id > 0 ) {

            // add rows to variables
            var specific_post_edit_row = $( \'#edit-\' + id ),
                specific_post_row = $( \'#post-\' + id ),
                featured_product = false; // let\'s say by default checkbox is unchecked

            if( $( \'.column-featured\', specific_post_row ).text() == \'Yes\' ) featured_product = true;

            $( \':input[name="featured"]\', specific_post_edit_row ).prop(\'checked\', featured_product );
        }
    }
});
我已复制、粘贴(&P);编辑了他的原始代码以供参考,网站上的教程在代码中有注释,解释了它的用法等。我不知道这个人只是在谷歌搜索时看到了这篇文章和他们的文章。

最后,我认为可能需要指出的一件事是,save\\u post挂钩可能会干扰save\\u post已有的任何挂钩,我不确定快速编辑save\\u post是否会将摘录字段识别为标准字段,或者是否需要上面的挂钩?!

结束