到目前为止,发布的代码存在大量安全问题,其中大多数问题可以通过使用提供的各种API来解决。
如果您使用REST API,您需要的很多内容都可以大大简化:
<?php
add_action( \'rest_api_init\', function () { // only run this when the REST API says it\'s setting things up
register_rest_route(
\'chetan/v1\', \'/color/\', // our namespace and the name of the endpoint to call via AJAX, /wp-json/chetan/v1/color
array(
\'methods\' => \'POST\', // are you using GET POST PUT etc
\'callback\' => \'chetan_rest_set_color\', // the function to call
\'permission_callback\' => function () {
return current_user_can( \'manage_options\' ); // admins only
}
)
);
} );
function chetan_rest_set_color( \\WP_REST_Request $req ) {
$color = esc_html( $_POST[\'color\'] );
// set the colour
// $result = ...
return $result;
}
和javascript:
<script>
jQuery(document).ready( function() {
jQuery("#color-submit").click(function() {
jQuery.ajax({
async:false,
type:"POST",
url:"<?php echo home_url( \'/wp-json/chetan/v1/color/\' ); ?>",
data: jQuery("#color-form").serialize(),
dataType:\'json\',
success:function(response){
alert(response.msg);//var object = JSON.parse(response);
jQuery(".jumbotron").css({"background-color":"#FF8745"});
//alert(response[\'msg\']);
var obj=response.msg;
console.log(obj);
}
});
});
});
</script>
注:这将需要PHP 5.3+和WordPress 4.5+。请记住,最早支持的PHP是v5。6,而WordPress当前为v4。6.
此外:
千万不要调用插件或主题中的PHP文件,这很危险,无论是通过AJAX还是表单提交。所有请求都应该通过WordPress(毕竟是CMS)
始终检查权限,否则任何来自4Chan或reddit的随机joe都可能在未经您许可的情况下更改您的设置。如果颜色不是十六进制值,而是一段转储所有密码的SQL怎么办正确缩进!提供的代码存在严重的缩进问题,使代码几乎无法读取。这永远不会发生,您的编辑器应该毫不费力地为您完成这一切。PHPStorm或Sublime Text等程序甚至可以为您重新缩进现有代码并对其进行格式化,并且会在您键入时缩进使用的sql不正确,没有指定表,没有行ID,我强烈怀疑是否需要自定义查询,请考虑主题mods,选项或各种类型的元可以通过使用以下内容本地化端点的URL路径来进一步简化上述代码:wp_localize_script( \'chetan_js\', \'chetan_js\', array(
\'url\' => home_url( \'wp-json/chetan/v1\')
) );
允许您删除javascript中的内联PHP,以便您可以这样做: type:"POST",
url: chetan_js.url+"/color",
data: jQuery("#color-form").serialize(),
现在,您可以将javascript放在外部文件中,而不是将其内联