it-swarm.com.de

Wie kann ich das Kommentarformular in der Post-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 zur Hilfe benötigen: Ich verwende disqus und es generiert eine URL für die "Diskussion", wenn das Kommentarformular zum ersten Mal geladen wird. Wenn dies die Vorschau ist, sieht es ungefähr so ​​aus wie site.com/?post_type=food&p=41009 Und das ist ein Problem, weil später, wenn der Beitrag unter einer echten URL veröffentlicht wird, die Anzahl der Kommentare nicht erkannt wird. Die einzige Möglichkeit besteht darin, die Diskussions-URL manuell zu ändern. Ich habe mich bereits mit disqus in Verbindung gesetzt und sie sagen "kein Fehler", wenn Sie nicht möchten, dass disqus die Vorschau-URL auswählt. Laden Sie disqus nicht auf die Vorschauseite. Die einzige mir bekannte Möglichkeit ist, das Kommentarformular vollständig zu entfernen. Wie würde ich das machen? Gibt es eine Bedingung für die Vorschauseite?

1
Michael Rogers

Ich habe einen kurzen Blick auf das Disqus-Plugin geworfen. Dies funktioniert, indem die Option deaktiviert wird, bevor das Plugin entscheidet, das Formular auszudrucken.

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;

}

Sie könnten 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;

}
2
bynicolas

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 das Laden der comments_template() stoppen, wenn es z. umwickelt mit

if( comments_open() ) 
    comments_template();

in Ihrem Thema. Es gibt auch eine comments_open()-Prüfung in comment_form(), um zu verhindern, dass das Formular angezeigt wird, wenn die Kommentare geschlossen sind.

Wir könnten es auch manuell in unserem Kindermotiv machen:

if( ! is_preview() ) 
    comments_template();

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

Hier finden Sie einige sehr interessante Vorschläge, wie Sie das Laden von comments_template() stören können.

PS: Ich habe die Option disqus_active in der Funktion dsq_can_replace() bemerkt:

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

so könnten wir etwas versuchen wie:

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

beachten Sie jedoch, dass dies nicht getestet wurde!

0
birgire