2016-05-29 16 views
0

ich möchte ein neues Feld "title" auf Kommentar von WordPress, nach dem Einfügen der neuen Eingabefeld in einer Standardform von WordPress ich fügte diese in meinem function.php für den Titel zu speichern, wenn neu Kommentar wird gesendet.einfache Bedingung auf wordpress function.php funktioniert nicht

dies der Code, den ich für den Titel speichern verwenden ist:

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

dies nur Code arbeiten, wenn entfernen Sie den Zustand:

 if(get_post_type($post->ID) == 'service') {} 

und ich verstehe nicht, warum, habe ich bereits versucht, diese Bedingung in comment.php oder in einer Fußzeile mit einfacher Funktion wie dieser

function test_function() { 

      if(get_post_type($post->ID) == 'service') { echo 'done'; } 


} 
add_action('wp_footer', 'test_function'); 

und es ist Arbeit, also ich don verstehe nicht, warum nicht in meinem primären Code arbeiten, keine Idee?

GELÖST MYSELF

THIS IS THE NEW CODE:

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

if ($ post-> post_type == 'Service') – user5200704

+0

versucht, aber das Ergebnis ist das gleiche, nicht arbeiten. – SURTLER77

Antwort

0

Manchmal in Wordpress, je nach Kontext kann die globale $ post unerwartetes Ergebnis. Daher kann etwas wie $ post-> ID nicht auf die richtige ID verweisen, nach der Sie suchen. Sie können auch versuchen, das $ post-Objekt zu untersuchen, um zu sehen, ob es das ist, was Sie erwartet haben; so wie:

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

Nach der Inspektion, dann würden Sie sicher wissen, wo und was in Ihrem Code nicht in Ordnung war ...

+0

Wie kann ich den var_dump auf der spezifischen Position der Funktion sehen? – SURTLER77

+0

ok ich habe den Kommentar eingereicht und das Ergebnis mit var_dump ist das "NULL NULL NULL", also für jede Variable eine Null erhalten, warum? – SURTLER77