关于wordpress function.php的简单条件不起作用

时间:2016-05-29 15:39:41

标签: php wordpress function wordpress-plugin hook

我想添加一个新字段" 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); 

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);

检查完毕后,您确定知道您的代码中哪些地方和哪些地方不合适......