最近在使用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. Sublime Text2 默认语言(windows/unix)设置,Sublime插件大全

    Sublime默认系统语言设置 Sublime Text 2默认使用的就是UTF8,这个UTF8模式使用的是不带BOM的,如果要修改这个配置,到Perference->Settings-User ...

  2. Mysql show indexes 查看索引状态

     查看表中有哪些已建立的索引 SHOW INDEX FROM tbl_name [FROM db_name] SHOW INDEX会返回以下字段: | Table | Non_unique | Key ...

  3. JVM监控启动参数

    服务端: JVM监控启动参数 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=52001 -Dcom.sun.ma ...

  4. JS数组与PHP数组的对比

    一.分类与创建 1:JS的数组都是索引数组,数组是一种特殊的对象,创建数组的方式有两种 //方式一 var arr1 = ['关羽', '张飞', '赵云', '马超', '黄忠']; //方式二 v ...

  5. BitTorrent Sync 老版本

    Sync version 1.4.111 Installer for Windows: BTSync.exe BTSync_x64.exe Installer for OSX: BTSync.dmgG ...

  6. Linux内核中container_of函数详解

    http://www.linuxidc.com/Linux/2016-08/134481.htm

  7. C#Arcengine通过坐标点生成面(环形)

    来自:http://www.cnblogs.com/lee24789229/p/5481978.html 通过传入坐标点,返回几何图形,此代码部分可以生成环形面. 方法一 private IGeome ...

  8. EF实体框架处理实体之间关联关系与EF延迟机制(下)

    在数据库中,表与表之间可能存在多种联系,比如,一对多,多对多的关系.当我们使用逻辑外键在数据库建立两张表之间的关系的时候,我们使用EF实体框架 必然也会将这种关系映射到我们的实体关系中来.所以,在我们 ...

  9. 基于tomcat7 web开发中的一点小东西

    控制台: org.apache.jasper.compiler.TldLocationsCache tldScanJar 信息: At least one JAR was scanned for TL ...

  10. MySQL面试题集锦

    1. 如何设计一个高并发的系统 ① 数据库的优化,包括合理的事务隔离级别.SQL语句优化.索引的优化 ② 使用缓存,尽量减少数据库 IO ③ 分布式数据库.分布式缓存 ④ 服务器的负载均衡 2. 锁的 ...