我试图避免某些代码显示在特定页面上, 例如标签类别和其他页面。
if( !is_front_page() && !is_search() && !is_page( 'article', 'preview' ) && !is_category() && !is_tax() && !is_tag() ){
//code goes here..
}
当用户登陆页面时, 该条件工作正常。但是这些页面使用ajax来检索帖子, 并且当这种情况发生时, 条件变为false, 页面上显示不必要的代码。
为什么会这样呢?有谁对此有任何想法吗?任何帮助将不胜感激。
#1
你应该在if语句中添加一个附加约束, 以检查该请求是否为ajax请求。并非在每台服务器上都使用此功能, 但是如果你使用的是Apache, 它将为你工作。
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) && !is_front_page() && !is_search() && !is_page( 'article', 'preview' ) && !is_category() && !is_tax() && !is_tag() ){
//code here
}
如果不是ajax请求, 则上述内容仅适用。如果对此php文件发出了ajax请求, 则strtolower($ _ SERVER [‘HTTP_X_REQUESTED_WITH’])==’xmlhttprequest’应该为true, 这就是你如何检查它是否为ajax请求并进行相应处理的方法
#2
你应该获得具有上述条件的Ajax响应数据。
或者, 当你不想显示该代码时, 可以在你的Ajax中传递一个变量(参数), 那段时间将在你的Ajax中传递, 而当Ajax函数在那段时间获得该变量(参数)时, 如果不使用get(empty)参数, 则必须添加上述条件, 然后对所有页面执行。
更好的方法是以某种方式获得对Ajax的响应, 从而获得超出页面状态的条件。
评论前必须登录!
注册