我想添加一个新字段" title"关于wordpress的评论,在wordpress的默认形式中插入新的输入字段后,我在我的function.php
中添加了这个,以便在提交新评论时保存标题。
这是我用于保存标题的代码:
function add_comment_meta_values($idcommento) {
global $post;
$idcommento= get_comment_ID();
$tipodipost= get_post_type($post->ID);
if( get_post_type($post->ID) == 'service') {
if(isset($_POST['title_svz']) ) {
$title= wp_filter_nohtml_kses($_POST['title_svz']);
add_comment_meta( $idcommento , 'title_svz', $title, false);
}}
}
add_action ('comment_post', 'add_comment_meta_values', 1);
此代码仅在删除条件时起作用:
if( get_post_type($post->ID) == 'service') {}
我不明白为什么,我已经在comment.php中尝试了这个条件,或者在这样的简单函数的页脚中尝试了这个条件
function test_function() {
if( get_post_type($post->ID) == 'service') { echo 'done'; }
}
add_action( 'wp_footer', 'test_function' );
它的工作,所以我不明白为什么不能在我的主要代码中工作,任何想法?
解决了自己的问题
这是新代码:
function add_comment_meta_values($idcomment) {
$comment_full = get_comment( $idcomment );
$idpost = $comment_full->comment_post_ID;
$typepost= get_post_type($idpost);
if( $typepost == 'service') {
if(isset($_POST['title_svz']) ) {
$title= wp_filter_nohtml_kses($_POST['title_svz']);
add_comment_meta( $idcomment , 'title_svz', $title, false);
} }
}
add_action ('comment_post', 'add_comment_meta_values', 10, 1);
答案 0 :(得分:0)
有时在Wordpress中,根据Context,全局$ post可能会给你带来意想不到的结果。因此,$ post-> ID之类的内容可能无法指向您正在寻找的相应ID。您也可以尝试检查$ post对象,看看它是否符合您的预期;像这样:
<?php
function add_comment_meta_values($idcommento) {
global $post;
// TRY DUMPING THE $post VARIABLE TO SEE WHAT YOU GET
var_dump($post->ID);
var_dump($post->post_type);
var_dump($post);
exit;
$idcommento = get_comment_ID();
$tipodipost = get_post_type($post->ID);
// ALTHOUGH THIS IS ESSENTIALLY THE SAME AS WHAT YOU DID
if( $post->post_type == 'service') {
if(isset($_POST['title_svz']) ) {
$title= wp_filter_nohtml_kses($_POST['title_svz']);
add_comment_meta( $idcommento , 'title_svz', $title, false);
}}
}
add_action ('comment_post', 'add_comment_meta_values', 1);
检查完毕后,您确定知道您的代码中哪些地方和哪些地方不合适......