首先,也最重要的是,感谢所有花时间回应的人。我是一个新的开发人员,我肯定我有一个误解或一些简单的东西,我错过了。我花了几个小时尝试不同的东西,但我不知道现在该尝试什么。下面您可以找到我的代码和问题的解释。
我试图实现的目标:本质上,我试图创建一个插件,从插件管理页面编辑我页面上的所有元描述。
考虑到这一点,我创建了一个非常简单的文件,其中包含了我试图实现的所有原则。我的想法是,一旦我弄清楚了这一部分,我就会找出合适的循环,以尝试实现我的最终目标。下面是尽可能精确的代码。再次感谢您的帮助-我已经测试了一段时间了,只是无法让这个该死的东西正常工作。
我收到了AJAX请求,要记录它成功了,所以我完全不知所措,因为它在刷新时不会保存或更新数据库。
<?php
function ews_metas_add_admin_page() {
// Adds plugin page to menu
add_menu_page (\'Effective Web Solutions Metas Descriptions\', \'EWS Metas\', \'manage_options\', \'ews_meta_options_stephen_version\', \'ews_meta_page_creation_stephen\', get_template_directory_uri() . \'/images/admin-ico-gray.png\', 110 );
//Activate custom settings
add_action( \'admin_init\', \'display_metas_fields\');
}
add_action( \'admin_menu\', \'ews_metas_add_admin_page\'); ?>
<script>
jQuery(document).ready(function() {
jQuery(".toplevel_page_ews_meta_options_stephen_version form").submit(function() {
var post_meta = jQuery("input.testing").val();
var post_ID = jQuery("input.testing").attr("name");
jQuery.ajax({
type: "POST",
url: \'https://dev.ewsproduction.com/dev6/ewstheme/wp-admin/admin-ajax.php\',
data: {
action: "update_meta_descriptions",
post_id: post_ID,
post_meta: post_meta,
},
success: function( data ) {
//do something
console.log(\'It worked!\');
}
});
return false;
});
});
</script>
<?php
function ews_meta_page_creation_stephen() { ?>
<div>
<?php settings_errors(); ?>
<form method="post">
<input id="meta" class="testing" type="text" name="4189" value="<?php echo esc_html( get_post_meta( 4189, \'_metadescs\', true ) ); ?>" />
<?php submit_button();?>
</form>
</div>
<?php } ?>
<?php add_action( \'wp_ajax_update_meta_descriptions\', \'update_meta_descriptions\' );
function update_meta_descriptions() {
$post_id = $_POST[\'post_id\'];
$meta = $_POST[\'post_meta\'];
update_post_meta( $post_ID, \'_metadescs\', $post_meta );
echo \'Meta Updated\';
die();
}?>
考虑到所有这些,我们将非常感谢您的帮助。我已经尝试了我能找到的一切,但没有运气。
对我的总体目标的任何洞察都是有益的——我试图最终创建一个插件,列出插件页面上每个页面的所有元和页面标题信息。然后,我想能够编辑和更新这些值从说插件页。
最合适的回答,由SO网友:Ajonetech 整理而成
您犯了一些错误,我在下面描述了这些错误:
首先,您将jQuery Ajax代码放错了位置在ajax回调函数上定义变量名mashup,如$post\\u id,并在更新时使用$post\\u id;PHP区分大小写,因此它考虑两个不同的变量
在某些地方,不是闭合的}括号Here is the right code which I have modified in your code.
Check this and let me know it\'s work for you or not.
I have tested it works for me.
<?php /*Register the Menu*/
add_action( \'admin_menu\', \'ews_metas_add_admin_page\');
function ews_metas_add_admin_page() {
// Adds plugin page to menu
add_menu_page (\'Effective Web Solutions Metas Descriptions\', \'EWS Metas\', \'manage_options\', \'ews_meta_options_stephen_version\', \'ews_meta_page_creation_stephen\', get_template_directory_uri() . \'/images/admin-ico-gray.png\', 110 );
}
/*Page Html Render*/
function ews_meta_page_creation_stephen() { ?>
<div>
<?php settings_errors(); ?>
<form method="post">
<input id="meta" class="testing" type="text" name="2316" value="<?php echo esc_html( get_post_meta( 4189, \'_metadescs\', true ) ); ?>" />
<?php submit_button();?>
</form>
</div>
<script>
jQuery(document).ready( function($){
jQuery(".toplevel_page_ews_meta_options_stephen_version form").submit(function() {
var post_meta = jQuery("input.testing").val();
var post_ID = jQuery("input.testing").attr("name");
jQuery.ajax({
type: "POST",
url: \'https://dev.ewsproduction.com/dev6/ewstheme/wp-admin/admin-ajax.php\',
data: {
action: "update_meta_descriptions",
post_id: post_ID,
post_meta: post_meta,
},
success: function( data ) {
//do something
console.log(\'It worked!\');
}
});
return false;
});
});
</script>
<?php }
/*Update the meta using Ajax request */
add_action( \'wp_ajax_update_meta_descriptions\', \'update_meta_descriptions\' );
function update_meta_descriptions() {
global $wpdb;
$post_id = $_POST[\'post_id\'];
$meta = $_POST[\'post_meta\'];
$details = update_post_meta( $post_id, \'_metadescs\', $meta );
echo \'Meta Updated\';
die();
}?>