最近在使用WordPress制作一个企业网站,因为是企业网站所以文章和页面都不需要评论功能,因此在主题里禁用掉了评论功能

//禁用页面和文章的评论功能
//add_filter('the_posts','htl_disable_page_comments'); //添加时禁用页面和文章的评论功能 add_filter('add_posts','htl_disable_page_comments');
function htl_disable_page_comments( $posts ){
//if( is_page()){
$posts[0]->comment_status ='disabled';
$posts[0]->ping_status ='disabled';
//}
return $posts;
}
//禁用WordPress的Pingback和Trackback功能
add_filter('xmlrpc_methods','remove_xmlrpc_pingback_ping');
function remove_xmlrpc_pingback_ping( $methods ){
unset( $methods['pingback.ping']);
return $methods;
};
但网站需要有一个联系我们页面即留言功能,于是我就在该页面上通过改造WP的评论功能来实现留言
//评论自定义字段
function add_comment_meta_values($comment_id){
//地址
if(isset($_POST['address'])){
$address = wp_filter_nohtml_kses($_POST['address']);
add_comment_meta($comment_id,'address', $address,false);
}
// phone
if(isset($_POST['Phone'])){
$Phone = wp_filter_nohtml_kses($_POST['Phone']);
add_comment_meta($comment_id,'Phone', $Phone,false);
}
// comolay
if(isset($_POST['comolay'])){
$comolay = wp_filter_nohtml_kses($_POST['comolay']);
add_comment_meta($comment_id,'comolay', $comolay,false);
}
}//end评论自定义字段
add_action ('comment_post','add_comment_meta_values',1);
//添加评论自定义字段标题
function add_comment_meta_title( $columns )
{
return array_merge( $columns, array(
'address'=>'地址',
'Phone'=>'联系电话',
'comolay'=>'公司',
));
}//end添加评论自定义字段标题
add_filter('manage_edit-comments_columns','add_comment_meta_title');
//输出自定义字段值
function echo_comment_column_value( $column, $comment_ID )
{
echo get_comment_meta( $comment_ID, $column ,true);
}
add_filter('manage_comments_custom_column','echo_comment_column_value',10,2);

然后在留言模板文件中进行制作后并测试

<?php
/*TemplateName:购物车模板
*@author htl
*@date2014-12-03
*/
get_header();
//echo the_id();
?>
<?php get_sidebar()?>
<div id="neirong">
<?php
$query = new WP_Query( array('post_type'=>'post','order'=>'DESC','orderby'=>"ID",'p'=>'3'));
if(isset($query)&& $query->have_posts()):
?>
<?php
while($query->have_posts()):
$query->the_post();
?>
<!-- html代码-->
<?php
endwhile;
else:
get_template_part('error');
endif;
?>
</div>
<?php if( comments_open()):?>
<!--评论html代码-->
<?php endif;?>
</div>
<?php get_footer();?>
但结果却返回“抱歉,该项目的评论已关闭”,一开始以为是页面中没有开启评论,后来查看该页面已经开启,然后又将function中的"禁用页面和文章的评论功能"给删除掉结果还是不行
一直不知道什么原因,于是在页面将当面页面的信息打印出来,而"post_status"却为“disabled”,但数据库中明明为“open”,再一看打印出来的信息,跟我url中的信息完全不一样
<?php
$post=get_post(the_id());
print_r($post);//post_status="disabled"
if( comments_open()):?>
但当我把当前页面打印的信息移到$query前面时信息又对了,评论也是开启的。
最后在”露兜博客“上找到一篇文章,原来如果在当前主循环中调用query_posts,WP_Query等方法,那么当前主循环将会被改变,而在调用the_xx时,此时信息就变成了重新查询后的信息
知道原因就好解决了,在WordPress文档中有介绍,通过wp_reset_query()和wp_reset_postdata()方法都可以将被更改过的主循环重新恢复回来
 
修改后的代码,购物车模板

<?php
endwhile;
else:
get_template_part('error');
endif;
//echo the_id();//此时ID为3,the_posts()的信息为$query的信息
//重置query,否则当前的the_post()为 $query->the_post();,跟当前页面信息不一致
//在该代码后面再调用the_xxx将会出现问题,因为当前的the_post信息已经被$query修改掉了
wp_reset_query();
//wp_reset_postdata();使用 new WP_Query方法重新查询用以恢复当前主循环
//echo the_id();//id为url中的ID,the_posts()的信息为当前页面的信息
?>
 
参考:
 
 
 
 
 
 

解决WordPress 页面无法评论的问题的更多相关文章

  1. 禁用/移除WordPress页面的评论功能

    对于某些类型的WordPress站点,也许不需要在页面(page)提供评论功能,那么你可以通过下面的方法,很容易就禁用或移除WordPress页面的评论功能. 方法1:在页面编辑界面取消该页面的评论功 ...

  2. WordPress后台的文章、分类,媒体,页面,评论,链接等所有信息中显示ID并将ID设置为第一列

    WordPress后台默认是不显示文章.分类等信息ID的,查看起来非常不方便,不知道Wp团队出于什么原因默认不显示这个但可以使用Simply Show IDs插件来实现 不使用插件,其他网友的实现: ...

  3. WordPress中添加自定义评论表情包的方法

    先来看看效果: 现在由于WordPress版本更新,再加上WordPress主题也越来越多,而现在的主题一般都是禁用了WordPress自带的评论表情,其实自带 的评论表情也是很丑的,但是以前我们可以 ...

  4. 五种WordPress防止垃圾评论方法-过滤垃圾评论提高WP运行效率

    WordPress貌似和垃圾评论是一对“孪生兄弟”,无论在国内还是国外的空间主机上搭建的Wordpress博客,无论Wordpress有多少流量多么低的权重,垃圾评论都会自动找上门来,假如有好几天没有 ...

  5. 解决wordpress的fonts.googleapis.com在国内无法访问的问题

    因为wordpress及主题的样式中几乎都使用了fonts.googleapis.com,而国内因为你知道的原因,是无法正常使用google服务的,因此导致在很多国内设备上打不开wordpress页面 ...

  6. 解决WordPress设置错误的url网站不能访问的问题

    通过WordPress后台首选项更改了网站url地址之后,网站就会出现访问不了的情况,一般来说,网站后台也登陆不上去了,我从网上寻找到了四种方法,这四种方法前三种都是需要登陆到后台的,但实际上出错后, ...

  7. wordpress页面F12时源码多出的内容在index.php header.php找不到

    wordpress页面按F12时源码多出的内容在index.php header.php找不到 比如类似这样的内容: <div style="position:absolute;fil ...

  8. wordpress自动清理评论回收站

    有时wordpress的垃圾评论实在让人心烦,杂草难除根,footprint吹又生.如果你有心情的话会一个个把垃圾评论放入回收站,但是时间一长,回收站里的东西越堆越多,你可以点击回收站,然后再点一下e ...

  9. 解决angular2页面刷新后报404错误

    如果你的angular项目部署到一个tomcat容器里面,localhost:8080是JavaWeb的主页,localhost:8080/driver/login是你angular2项目的登陆地址. ...

随机推荐

  1. POJ 1469 COURSES 二分图最大匹配 二分图

    http://poj.org/problem?id=1469 这道题我绝壁写过但是以前没有mark过二分图最大匹配的代码mark一下. 匈牙利 O(mn) #include<cstdio> ...

  2. eclipse转idea, 快捷键设置

    设置快捷键的途径: 打开idea的配置,找到Keymap,设置为eclipse 另外还要手动设置某些快捷键 上下移动 点击类打开 代码提示 查询 重命名 快速实现接口 回到上一次光标处

  3. Py脚本运行后暂停不退出

    方法一:在脚本结束后提示用户按任意键退出 import os os.system('pause') 方法二:在脚本结束后等待输入,按回车键退出 input("") 方法三:在脚本结 ...

  4. ZOJ 2819 Average Score 牡丹江现场赛A题 水题/签到题

    ZOJ 2819 Average Score Time Limit: 2 Sec  Memory Limit: 60 MB 题目连接 http://acm.zju.edu.cn/onlinejudge ...

  5. Alpha冲刺(1/10)——追光的人

    1.队友信息 队员学号 队员博客 221600219 小墨 https://www.cnblogs.com/hengyumo/ 221600240 真·大能猫 https://www.cnblogs. ...

  6. Lucene——索引的创建、删除、修改

    package cn.tz.lucene; import java.io.File; import java.util.ArrayList; import java.util.List; import ...

  7. 如何使用git工具向github提交代码

    大致分为以下几个步骤 安装git环境,工具使用msysgit github上的账号 首先在github上点击头像旁边的加号 add new ,选择new Repository,自己创建一个名字,假设取 ...

  8. poj 1279 Art Gallery - 求多边形核的面积

    /* poj 1279 Art Gallery - 求多边形核的面积 */ #include<stdio.h> #include<math.h> #include <al ...

  9. AES advanced encryption standard

    // advanced encryption standard // author: karl malbrain, malbrain@yahoo.com typedef unsigned char u ...

  10. Remon Spekreijse CSerialPort用法

    在程序中如果要用到多个串口,而且还要做很多复杂的处理,那么最好不用MSComm通讯控件,如果这时你还不愿意自己编写底层,就用这个类:CserialPort类.作者是 Remon Spekreijse ...