最近在使用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. [ 转载 ] Java基础13--equals方法

    一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test; 2 3 public class TestEquals { 4 public s ...

  2. Java设计模式GOF之6大设计原则

    Java设计模式GOF之6大设计原则原则 1.开闭原则(Open Close Principle) 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 开闭原则是面向对象的可复用设计的第一块基石 ...

  3. [Arc063F] Snuke's Coloring 2

    [Arc063F] Snuke's Coloring 2 题目大意 给你一个网格图,一些点上有标记,求边长最大空白矩形. 试题分析 专门卡\(\log^2 n\)系列. 首先由题意我们可以找到答案的下 ...

  4. UOJ 310 黎明前的巧克力(FWT)

    [题目链接] http://uoj.ac/problem/310 [题目大意] 给出一个数集,A从中选择一些数,B从中选择一些数,不能同时不选 要求两者选择的数异或和为0,问方案数 [题解] 题目等价 ...

  5. [xsy3343]程序锁

    题意:有两个序列,序列中数字$\in\{-1,0,1\}$ 有两个指针,初始时分别指向两个序列的开始位置,有一个初始为$0$的数$a$,重复以下过程直到两个指针都指向序列末尾后 如果一个指针指向末尾后 ...

  6. 删除JBOSS eap4.3下的jmx-console、web-console、ws-console、status服务

    来源:http://iffiffj.iteye.com/blog/1404148 把下面代码保存为BAT文件,并放到JBOSS节点中运行. @echo off set HOME=%~dp0 set j ...

  7. Codeforces Round #355 (Div. 2) D. Vanya and Treasure 分治暴力

    D. Vanya and Treasure 题目连接: http://www.codeforces.com/contest/677/problem/D Description Vanya is in ...

  8. Linux下Nginx+多Tocat下的负载均衡环境的简单搭建

    本文主要分为四个部分: 1.Nginx的搭建:2.JDK+Tomcat的搭建:3.静态HTML的访问配置:4.负载均衡的配置 ===================================== ...

  9. 基于Landmark的人脸对齐以及裁剪方法

    利用Landmarks进行人脸对齐裁剪是人脸检测中重要的一个步骤.效果如下图所示: 基本思路为: a.人脸检测 人脸的检测不必多说了,基本Cascade的方式已经很不错了,或者用基于HOG/FHOG的 ...

  10. SlickOne敏捷开发框架介绍(一) -- 基于Dapper, Mvc和WebAPI 的快速开发框架

    前言:在两年前(最初发布时间:2013年1月9日(csdn),当前文章时间2015年11月10日),项目组推出了基于Dapper,Mvc和WebApi的快速开发框架,随着后续Slickflow产品的实 ...