我怎样才能update_post_meta从后用Ajax之外外面的帖子?

问题描述 投票:0回答:1

我建立了自己的网站插件,它具有自定义元箱内复选框,并在复选框的勾选,那么Button1的将被显示,如果检查BUTTON2将被显示。那为作者。所以,我有帖子列表也为每个岗位上的按钮。因此,使用Ajax我想检查一下,我的文章列表与自定义的列上进行的按钮,复选框,选中从太更新帖子元来检查。

function cruiser_topic_pick_box_callback( $post ) {
$meta = get_post_meta( $post->ID );
$topic_checkbox_value = ( isset( $meta['topic_checkbox_value'][0] ) &&  '1' === $meta['topic_checkbox_value'][0] ) ? 1 : 0;
wp_nonce_field( 'topic_checkbox_value', 'topic_checkbox_value' ); 

echo'<input type="checkbox" name="topic_checkbox_value" id="topic_checkbox_value-' . $post->ID . '" value="1" ' . checked( $topic_checkbox_value, 1 ) . ' style="display: none;"/>'

if( $topic_checkbox_value  == 0){
    echo '<button class="btn btn-sm btn-info" id="click-btn" onclick="checkedFunction(' . $post->ID .')">Pick</button>';
}
else {
    echo '<button class="btn btn-sm btn-warning">Picked</button>';

}
}

function cruiser_save_topic_writer( $post_id )
{

$topic_checkbox_value = ( isset( $_POST['topic_checkbox_value'] ) && '1' === $_POST['topic_checkbox_value'] ) ? 1 : 0;
update_post_meta( $post_id, 'topic_checkbox_value', esc_attr( $topic_checkbox_value ) );

}

因此,它已经在门柱内侧工作,但没有对自定义列外邮按钮。所以,当用户点击自定义列的按钮,然后它会自动应改变复选框进行检查。默认情况下,该复选框将被选中。

当用户点击自定义列,则复选框将在门柱内侧检查的按钮,结果Button1的文本将变为BUTTON2我真正想要的是。

jquery ajax wordpress custom-post-type
1个回答
0
投票
jQuery(document).ready( function(){         
    jQuery('#content').on('click', '.mycheckbox', function(e) { 
        e.preventDefault();
        var post_id = jQuery(this).data( 'id' );   
        var mycheckbox_id = jQuery(this).val(); 

        jQuery.ajax({
            url  : ajaxurl,
            type : 'post',
            data : {
                action : 'update_post_topic_writer',
                post_id : post_id,
                mycheckbox_id : mycheckbox_id 
            },
            success : function( response ) {
                console.log(response);
            }
        });          
    });     
});

PHP

    add_action( 'wp_ajax_nopriv_update_post_topic_writer', 'update_post_topic_writer' );
    add_action( 'wp_ajax_update_post_topic_writer', 'update_post_topic_writer' );

    function update_post_topic_writer() {


        if ( isset($_POST) ) {

            $mycheckbox_id = $_POST['mycheckbox_id'];
            $post_id = $_POST['post_id'];

    update_post_meta( $post_id, 'topic_checkbox_value', esc_attr( $mycheckbox_id ) );

$return = array(
    'message' => __( 'Saved', 'textdomain' ),
);
wp_send_json_success( $return );

    }
© www.soinside.com 2019 - 2024. All rights reserved.