Verhindern Sie privaten Post 404

Ich möchte, dass private Posts (für diejenigen, die nicht eingeloggt sind) die single.php Vorlage genauso verwenden, wie es öffentliche Posts tun, in dem Moment, in dem sie in die 404.php Vorlage geworfen werden.

Ich habe mir die Core-Dateien genau angesehen, aber ich kann nicht herausfinden, wo die Template-Änderung (Anmerkung: dies ist keine Weiterleitung) passiert.

Kann jemand helfen?

Bearbeiten

Um zu erklären, warum ich das möchte, möchte ich, dass alle Besucher eine Vorschau des Inhalts sehen, aber “Mitglieder” eingeloggt sind, um den gesamten Post-Inhalt zu sehen.

Solutions Collecting From Web of "Verhindern Sie privaten Post 404"

Gemäß der Seite ” Inhaltssichtbarkeit ” sind private Posts nur für Personen mit ausreichenden Berechtigungsstufen sichtbar. WordPress stellt sie nicht nicht angemeldeten Benutzern überhaupt, also (vermutlich) dem 404 .

Wenn Sie eine eingeschränkte Vorschau für Nichtmitglieder anzeigen möchten, anstatt den Beitrag auf Privat festzulegen , können Sie Folgendes versuchen:

 add_filter( 'the_content', 'wpse101968_preview' ); function wpse101968_preview( $content ) { if( is_single() ) { if( ! is_user_logged_in() ) { $content = get_the_excerpt(); } } return $content; } 

Und dann sehen Ihre nicht eingeloggten Besucher den Auszug des Posts anstelle des gesamten Posts. Sie können die Auszüge auch so anpassen, dass sie nur das sehen, was sie sehen sollen.

Verweise

Kodex:

  • is_user_logged_in()
  • get_the_excerpt()

Du siehst keine Umleitung, um deine eigene Beobachtung zu bestätigen, so sehr du siehst, wie es aussieht – eine “Datei nicht gefunden”. Werfen Sie einen Blick auf die Abfrage in der Quelle um Zeile 2438 (unter anderem) . Der Status des Posts ist Teil der Abfrage selbst. Wenn der Status nicht übereinstimmt, werden keine Posts gefunden und das bedeutet 404 . Wie Sie aus dem Code entnehmen können, ist der status ziemlich streng geschützt. Das ist schwer zu überschreiben.

Ich würde empfehlen, einen benutzerdefinierten Beitragstyp für “nur eingeloggte” Beiträge zu verwenden. Das wird sowohl am Frontend als auch am Backend viel einfacher zu kontrollieren sein.