如果实际服务器进程中显示单个页面,则返回is\\u single。在Ajax函数中,没有什么是;“显示”;,你在做Ajax。
要检查浏览器中当前显示的对象是否为单个对象,需要将有关此信息从为浏览器提供服务的服务器进程传输到处理ajax请求的服务器进程。
请尝试以下操作:步骤1:将信息输入Javascript函数。您可以从$wp\\u查询对象获取信息。如果直接响应执行AJAX请求的javascript,可以这样做:
<script>
var is_single = <?php echo (is_single() ? \'1\' : \'0\' ); ?>;
</script>
如果要将ajax调用程序脚本排入队列,可以使用
wp_localize_script .
步骤2:将is\\U单个信息发布到Ajax函数
步骤3:check edit below! 更改Ajax PHP函数以合并is\\U单一信息:
function rando_stuff(){
$single = (int)$_POST[\'is_single\'];
if($single){
//do stuff
}
}
步骤4:利润;)
============================================EDIT 2022-02-20:
5年前,我就是这样编码的。然而,从那时起,我学到了更多关于正确使用POST值的知识,因此我重写了步骤3的函数。解释:每个POST或GET传输的值没有数据类型,因此它们被解释为字符串。要将这些值用作布尔(真/假)数据类型,我们必须对其进行类型转换。幸运的是,Wordpress有一个功能可以正确解释这一点。
function rando_stuff_improved(){
$is_single = false;
if( isset( $_POST[\'is_single\'] ) ){
$is_single = rest_sanitize_boolean( $_POST[\'is_single\'] );
}
if( $is_single ){
//do stuff
}
}