天哪。。。不,不,不!!!永远不要这样做。。。
为什么?有很多原因。。。
您将无法对中的用户执行任何操作views.php
- 如果您必须只统计匿名(未登录)用户的视图,该怎么办?
如果table_prefix
是否设置为“”?你的posts
表将导致冲突。。。
如果有一些插件在DB连接上运行会怎么样?您的脚本将连接到错误的数据库或导致其他冲突。
如果出于安全原因,您的脚本无法运行,怎么办?
还有很多其他原因,为什么你不应该这样做。。。
有理由制定最佳实践和标准。如果每个人都按照这些标准和实践进行编码,那么所有开发人员的生活就会变得更加轻松和美好。。。这样可以很容易地调试所有AJAX调用,等等。。。
所以是的,你绝对应该使用admin-ajax.php
和wp_localize_script
, 和$wpdb
, 以及正确的SQL转义,等等。。。
有什么区别?用户难道看不到ajax功能吗
是,它将可见。但是这将不是标准的AJAX调用-因此更难理解。。。
让我们做一些快速的实验。。。让我们看看这两个代码:
1.
add_action( \'wp_ajax_get_post_status\', \'ajax_get_post_status_callback\' );
function ajax_get_post_status_callback() {
$id = $_POST[\'id\'];
$post = get_post( $id );
if ( $post ) {
echo $post->post_status;
die;
}
echo 0;
die;
}
2。
include "ustawienia-polaczenia.php";
$i = $_POST[\'id\'];
$wiersz = PostsQuery()::create()->filterById( array($i) )->find();
if ( $wiersz ) {
echo $wiersz->post_status;
die;
}
echo 0;
die;
哪一个更容易阅读?我赌第一个。为什么?因为它使用WP核心功能,每个人都知道它们是如何工作的。我知道(或者我可以很容易地检查)什么
get_post
函数确实如此,依此类推。此代码还尊重所有过滤器和操作,因此不会与其他插件产生冲突。。。
另一方面,第二个代码就是一团糟。。。它包括一些其他文件,它使用一些奇怪的DB连接(是的,它是Propel)。甚至很难猜测它是同一个DB还是其他DB,以及它究竟是如何工作的。它完全忽略了任何其他插件。。。
所以,是的,每个人都会看到您的代码发送了一些奇怪的AJAX以及负责处理它的文件。问题是调试奇怪/自定义代码将花费更多的时间。。。您的代码很可能会产生问题和冲突。。。