2016-10-17 3 views
1

Ich fügte ein zusätzliches Feld zu meinem Kommentarbereich meiner Wordpress-Seite mit Hilfe eines kleinen Plugins, basierend auf einem Tutorial https://www.smashingmagazine.com/2012/05/adding-custom-fields-in-wordpress-comment-form/.WP benutzerdefinierte Kommentarfeld nur auf bestimmten Seite

Es ist nur ein Feld, das ich brauche (Postleitzahl).

Das Plugin funktioniert gut, aber es fügt das benutzerdefinierte Feld auf jeder Seite hinzu. Ich will es nur auf einer bestimmten Seite.

Ich habe versucht, all das Plugin-Code in eine Funktion zu wickeln, die auf die spezifische Seite lädt:

add_action('template_redirect', 'load-on-certain-page'); 

function load-on-certain-page(){ 
     if (is_page(23)) { 
     //Complete Plugin Code 
    } 
} 

Grundsätzlich das funktioniert, aber die Prüfung auf das leere Feld funktioniert nicht mehr.

add_filter('preprocess_comment', 'verify_comment_meta_data'); 

function verify_comment_meta_data($commentdata) { 
    if (empty($_POST['title'])) 
    wp_die(__('Fehler: Bitte geben Sie Ihre Postleitzahl ein.')); 
    return $commentdata; 
} 

Wenn ich die Feldprüfung von meiner load-on-certain-page() Funktion ausschließen überprüft er das Feld überall so, das ist keine Lösung. Ich habe auch versucht, der if-Anweisung eine zusätzliche Bedingung hinzuzufügen (is_page()), aber das funktioniert auch nicht.

Können Sie mir in die richtige Richtung zeigen, wie ich meine Plugin-Funktionen nur auf dieser bestimmten Seite funktionieren lassen kann? Und was "Best Practice" ist es, es zu tun?

Danke!

Antwort

0

Endlich habe ich es.

Das Problem ist, dass is_page() usw. nicht für den "preprocess_comment" -Filter funktioniert. Aber Sie können die Seiten-ID überprüfen Kommentar zu zugewiesen wird unter Verwendung von:

$post_id = $commentdata['comment_post_ID']; 
0

können Sie möglicherweise hinzufügen, eine if/else-Anweisung nur auf der jeweiligen Seite das Feld zu zeigen ...

if ($post->ID === 23) { 
    // Input for zip code on page 23 
} else { 
    // No input for zip code 
} 
+0

Das ist, was ich tue. Aber der Teil zum Überprüfen des Feldes funktioniert nicht mehr, wenn ich es in diese Aussage einfüge. :/ – Timo

+0

Ich bemerkte, dass du 'is_page()' benutzt - hast du es mit '$ post-> ID' versucht? –

+0

Ja, das habe ich auch versucht. – Timo

Verwandte Themen