如何使用AJAX更新Post Meta

时间:2018-01-18 08:25:15

标签: php ajax wordpress checkbox cmb2

我创建了一个网站,为自定义帖子类型,字段,元数据库等初始化CMB2。我创建了一个自定义复选框字段,其作用类似于标记。已选中或未选中。此复选框位于自定义帖子类型Metabox中,并在后端可见。

我们需要实现的是在前端有一个按钮供用户点击。单击该按钮时,复选框的值应更改(此复选框的update_post_meta)。

我想这应该用AJAX完成,但之前没有经验。

这是代码应该去的地方。它检查复选框是否被选中,如果选中它,则它只输出。如果未选中,则应输出将切换复选框状态的按钮。

<?php $adopted_check = get_post_meta( get_the_ID(), INVENTOR_LISTING_PREFIX . 'adopted-check', true ); ?>
                    <?php if ( $adopted_check ) { ?>
                             <div class="adopted"><i class="fa fa-thumbs-up" style="font-size: 20px;"></i><span><?php echo esc_attr__( 'Adopted', 'inventor' ); ?></span></div>
                        <?php } else { ?>
                        <button type="submit">Mark as Adopted</button>
                    <?php } ?>

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以在jQuery中创建这样的ajax调用

$.ajax({
            type: "POST",
            url: ajaxurl,
            async:true,
            data: { 
                action: 'callback_action', 
                security: $('#security').val(),
                custom_info:custom_info
            },
            cache: false,
        });

现在wordpress会自动捕获wp_ajax_动作的动作,例如:

add_action('wp_ajax_callback_action','function_name');
function function_name(){
$security = $_POST['security'];
$custom_info = $_POST['custom_info'];
// your code goes here to update the meta
die()// It's necessary to add die at the end of an ajax call or it will return 0.
}

完成。