it-swarm.com.de

Wie benutzt du WP Schnecken für PDF Dateien/Medien?

Ich habe Hunderte von PDFs, die auf meiner Website verlinkt sind, und alle diese PDFs haben eine eindeutige Dokumentennummer und -revisionen. z.B. 902367 Version I

Ich möchte für jedes Dokument einen definierten Slug haben, z. B. mysite.com/902367/, der direkt auf das Dokument verweist. Redirects sind eine Möglichkeit, dies zu erreichen, aber selbst mit REGEX wäre dies schlampig und nicht ideal.

Ich habe eine andere Frage gefunden, die erklärt, dass alle Anhänge, die auf diese Seite hochgeladen werden, in dieselbe Kategorie fallen, wenn Ihr Thema eine Anhangsdatei enthält. Dies trifft jedoch nicht wirklich auf meine Situation zu, da ich nicht versuche, PDFs einer Kategorie oder einer Seite zuzuweisen, sondern sie im Wesentlichen selbst zu einer Seite zu machen. Ist das Erstellen einer Pseudoseite für das Dokument der sauberste Weg, um dies zu erreichen?

Was wäre der beredteste Weg, um die WordPress-Slug-Funktionalität auf meine PDFs anzuwenden?

1
fwho

Meiner Meinung nach ist es am besten, einen Endpunkt der Form mysite.com/pdf/<id> oder etwas Ähnliches hinzuzufügen. Auf diese Weise vermeiden Sie, die Anhänge an Posts/Seiten anzuhängen oder eine Seite für jede PDF-Datei mit zu erstellen, was für Ihre Anforderungen imo redundant ist.

Dies ist eine sehr kleine und grundlegende Anleitung. Sie können an Ihre Bedürfnisse anpassen.

Zuerst fügen wir einen Endpunkt hinzu, der mit allen Anforderungen des Formulars mysite.com/pdf/<id> übereinstimmt. Beachten Sie, dass Sie die Umschreiberegeln leeren sollten, damit der neue Endpunkt funktioniert. Sie können dies manuell tun, indem Sie Einstellungen-> Permalinks-> Änderungen speichern oder flush_rewrite_rules verwenden. Es sollte entweder auf dem Hook shutdown oder bei der Aktivierung des Plugins/Themes (de) ausgeführt werden. Das Ausführen auf dem Hook init ist eine schlechte Praxis.

function my_endpoints() {

    add_rewrite_endpoint( 'pdf', EP_ROOT);

}

add_action( 'init', 'my_endpoints' );

Dann verwenden wir template_redirect , um die Anfrage zu bearbeiten.

function my_template_redirect() {

    global $wp_query;

    /* If it is a /pdf/<id> request then serve the file */        

    if(isset( $wp_query->query_vars['pdf'])){

        // You can use sanitize_file_name also
        $pdf_id = intval($wp_query->query_vars['pdf']); 

        /* Find the file and serve it */

    }

    return;
}

add_action( 'template_redirect', 'my_template_redirect' );
1
Laxmana