2016-05-29 5 views
0

Я хочу добавить новое поле «title» в комментарий wordpress, после вставки нового поля ввода в форму Wordpress по умолчанию, я добавил это в свой function.php для сохранения названия, когда новый комментарий.Простое условие на 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

если ($ post-> post_type == «сервис») пытался – user5200704

+0

, но результат тот же, а не работа. – SURTLER77

ответ

0

Иногда в Wordpress, в зависимости от контекста, глобальные $ пост может дать вам неожиданный результат. Таким образом, что-то вроде $ post-> 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); 

После осмотра, вы уверены, что знаете, где и что не было в порядке в вашем коде ...

+0

Как я могу видеть var_dump в конкретной позиции функции? – SURTLER77

+0

ok Я отправил комментарий, а результат с var_dump - это «NULL NULL NULL», поэтому для каждой переменной получите нуль, почему? – SURTLER77

Смежные вопросы