Benutzerdefinierten Beitragstyp nur für angemeldete Benutzer sichtbar machen

7

Ich erstelle einen benutzerdefinierten Beitragstyp, der nur von angemeldeten Benutzern angezeigt werden soll. Ich habe eine einzelne {postType} .php erstellt, um das Standard-Rendering zu überschreiben, und oben einen Logincheck eingefügt, der zum Login umleitet Seite und zurück, nach dem Login.

Ich habe das Archiv für meinen Beitragstyp nicht aktiviert, daher muss ich die benutzerdefinierte Archivseite nicht zusätzlich überschreiben.

Und dies scheint wie beabsichtigt zu funktionieren und ohne Plugins oder so weiter einfach zu warten.

Aber reicht dies aus, um sicherzustellen, dass die Beiträge für nicht autorisierte Benutzer nicht sichtbar sind? Welche möglichen Ansichtsmodi / URL-Pfade hat ein benutzerdefinierter Beitragstyp?

Afaik, ich muss den Beitrag public_queryable = TRUE machen, da ich möchte, dass er im Frontend sichtbar ist, allerdings nur für angemeldete Benutzer. Ich bin mir nicht sicher, ob ich mit den Einstellungen für den benutzerdefinierten Beitragstyp oder mit bestimmten Abfragen, die ich in der Single- {postType} .php verwenden kann, um nicht öffentliche abfragbare Beiträge abzurufen, einige Tricks ausführen kann.

Duveit
quelle

Antworten:

5

Ein einfacher Filter für Ihren Beitragsinhalt kann diese Aufgabe problemlos erledigen. Versuchen wir diesen Code

function tp_stop_guestes( $content ) {
    global $post;

    if ( $post->post_type == 'YOUR_CUSTOM_POSTTYPE' ) {
        if ( !is_user_logged_in() ) {
            $content = 'Please login to view this post';
        }
    }

    return $content;
}

add_filter( 'the_content', 'tp_stop_guestes' );

Wir wenden Filter auf den Beitragsinhalt an. Wenn der Beitragstyp Ihr ​​benutzerdefinierter Beitragstyp ist und der Benutzer nicht angemeldet ist, wird anstelle des ursprünglichen Inhalts "Bitte anmelden, um diesen Beitrag anzuzeigen" angezeigt.

Tareq
quelle
2
Wie kann dies eingerichtet werden, um eine normale 404 (keine sichtbare Weiterleitung zu mydomain.com/404) für nicht angemeldete Benutzer zu verursachen?
Supertrue
0

Sie können die obige Funktion auch in einen Shortcode erweitern, mit dem Sie angeben können, welche Teile eines Beitrags für Benutzer ausgeblendet werden sollen, die nicht angemeldet sind.

Philip Downer
quelle