Wie kann ich das Kommentarformular in der Vorschau nicht laden?

Ich brauche eine Möglichkeit, das Kommentarformular bei der Vorschau eines Posts nicht zu laden, gibt es eine Möglichkeit, dies zu erreichen? Wie?

Wenn Sie einen Grund brauchen, um zu helfen: Ich benutze disqus und es erzeugt eine URL für die “Diskussion” beim ersten Mal, wenn das Kommentar-Formular geladen wird, wenn dies die Vorschau ist, dann wird es etwas wie site.com/?post_type=food&p=41009 aussehen Und das ist ein Problem, denn nachdem der Post unter einer echten URL veröffentlicht wurde, werden die Kommentare nicht mehr erkannt. Die einzige Möglichkeit besteht darin, die Diskussions-URL manuell zu ändern. Ich habe bereits disqus kontaktiert und sie sagen “kein Fehler”, wenn Sie nicht wollen, dass die Previous-URL nicht ausgewählt wird, laden Sie keine Disqus auf der Preview-Seite, der einzige Weg, den ich weiß ist, das Kommentar-Formular komplett zu entfernen, also, wie würde ich darüber gehen? Gibt es eine Art Bedingung für die Vorschau-Seite?

Solutions Collecting From Web of "Wie kann ich das Kommentarformular in der Vorschau nicht laden?"

Ich warf einen kurzen Blick auf das disqus-Plugin. Dadurch wird die Option deaktiviert, bevor das Plugin das Formular ausdruckt.

add_filter( 'pre_option_disqus_active', 'wpse_conditional_disqus_load' ); function wpse_conditional_disqus_load( $disqus_active ) { if( is_preview() ){ return '0'; } return $disqus_active; } 

Du könntest auch so etwas ausprobieren (nicht getestet)

 add_filter( 'the_content', 'wpse_load_disqus'); function wpse_load_disqus( $content ){ if( is_preview() ){ return $content; } if( is_singular() ) { // displays on all single post types. use is_single for posts only, is_page for pages only $content .= ?> // You disqus script here < ?php ; } return $content; } 

Hier ist ein Vorschlag: Schließen Sie die Kommentare bei der Vorschau :

 add_filter( 'template_redirect', function() { if( is_preview() ) add_filter( 'comments_open', '__return_false' ); } ); 

Dies sollte verhindern, dass comments_template() geladen wird, wenn es z. B. umhüllt ist

 if( comments_open() ) comments_template(); 

in deinem Thema. Es gibt auch eine comments_open() Prüfung innerhalb von comment_form() , um zu verhindern, dass das Formular comment_form() , wenn die Kommentare geschlossen sind.

Wir könnten es auch manuell in unserem Child Theme machen:

 if( ! is_preview() ) comments_template(); 

Aber ich bin mir nicht sicher, wie es mit Plugins wie Disqus funktioniert.

Hier sind einige sehr interessante Vorschläge, wie Sie das Laden von comments_template() .

PS: Ich habe festgestellt, dass die Option disqus_active in der function dsq_can_replace() überprüft wurde:

 if (get_option('disqus_active') === '0'){ return false; } 

also könnten wir etwas versuchen wie:

 add_filter( 'template_redirect', function() { is_preview() && add_filter( 'pre_option_disqus_active', function( $value ) { return '0'; } ); } ); 

aber beachte, dass dies nicht getestet ist!