我想在我的插件中添加meta框,但我想添加两个输入和一个类似submit按钮的按钮,当我单击submit按钮时,然后输入字段数据发送到数据库并接收,但如果没有publish按钮,这是可能的,我从来没有使用publish按钮。请提供有关简单代码的任何帮助。
密码
add_action( \'add_meta_boxes\', \'rt_book_sales\' );
add_action( \'wp_ajax_rt_book_name_rander\', \'rt_book_name_rander\' );
add_action( \'save_post\', \'rt_book_name_rander\', 10, 3 );
function rt_book_sales(){
add_meta_box( \'rt_bk_goal\', \'Meta Box Title\', \'rt_books_meta_rander\', \'post\', \'normal\', \'high\' );
}
function rt_books_meta_rander(){
?>
</div class= "wrap">
<input type="text" name="book_name" id="book_name" >
<input type="submit" class="rt_bk_btn">
</div>
<?php
}
?>
和ajax jquery代码。
$(document).on(\'click\', \'.rt_bk_btn\', function(e) {
e.preventDefault();
var bk_name = $(\'#book_name\').val();
var data = {
\'bk_name\': bk_name,
\'action\': \'rt_book_name_rander\',
}
$.post(ajaxurl, data, function(resp){
console.log(resp);
});
和保存post功能。
function rt_book_name_rander(){
global $post;
if (isset($_POST[\'bk_name\'])) {
$bk_name = $_POST[\'bk_name\'];
update_post_meta( $post->ID, \'rt_book\', $bk_name );
}
die(0);
}
这是我的代码,当我使用get\\u post\\u meta()函数获取数据时,没有数据保存在数据库中。。我的问题在哪里。
最合适的回答,由SO网友:Shibi 整理而成
你可以像这样获得帖子id
var post_id = $(\'input[name="post_ID"]\').val();
请参阅完整的工作代码。顺便说一句,它只将值保存到ajax中的meta,不会保存在发布按钮上,您需要添加另一个带有其他函数的挂钩。您不能使用与ajax中相同的函数,因为
die()
add_action( \'add_meta_boxes\', \'rt_book_sales\' );
add_action( \'wp_ajax_rt_book_name_rander\', \'rt_book_name_rander\' );
function rt_book_sales(){
add_meta_box( \'rt_bk_goal\', \'Meta Box Title\', \'rt_books_meta_rander\', \'post\', \'normal\', \'high\' );
}
function rt_books_meta_rander($post){
?>
</div class= "wrap">
<input type="text" name="book_name" id="book_name" value="<?php echo esc_attr(get_post_meta( $post->ID, \'rt_book\', true )); ?>">
<input type="submit" class="rt_bk_btn">
</div>
<?php
}
add_action(\'admin_footer\', \'my_admin_add_js\');
function my_admin_add_js() {
?>
<script>
jQuery(document).ready(function($) {
$(document).on(\'click\', \'.rt_bk_btn\', function(e) {
e.preventDefault();
var bk_name = $(\'#book_name\').val();
var post_id = $(\'input[name="post_ID"]\').val();
var data = {
\'post_id\': post_id,
\'bk_name\': bk_name,
\'action\': \'rt_book_name_rander\',
}
$.post(ajaxurl, data, function(resp){
console.log(resp);
});
});
});
</script>
<?php
}
function rt_book_name_rander(){
if (isset($_POST[\'bk_name\']) && isset($_POST[\'post_id\'])) {
$bk_name = $_POST[\'bk_name\'];
update_post_meta( $_POST[\'post_id\'], \'rt_book\', $bk_name );
}
die();
}