it-swarm.com.de

So fügen Sie ein PHP Seite zu WordPress?

Ich möchte eine benutzerdefinierte Seite für mein WordPress-Blog erstellen, auf der mein PHP Code ausgeführt wird, während er Teil des gesamten CSS/Themas/Designs der Website bleibt.

Der PHP Code verwendet APIs von Drittanbietern (daher muss ich andere PHP Dateien einschließen)

Wie mache ich das?

N.B. Ich muss nicht speziell mit der Wordpress-API interagieren - abgesehen von der Einbindung bestimmter anderer PHP -Libs, die ich benötige, habe ich keine weiteren Abhängigkeiten im PHP -Code, den ich in a einbinden möchte WP Seite. Daher wäre jede Lösung, für die das Erlernen der WP-API nicht erforderlich war, die beste.

223
rutherford

Sie müssen nicht mit der API interagieren oder ein Plugin verwenden.

Duplizieren Sie zuerst post.php oder page.php in Ihrem Designordner (unter /wp-content/themes/themename/).

Benennen Sie die neue Datei in templatename.php um (wobei Templatenname Ihre neue Vorlage sein soll). Um Ihre neue Vorlage zur Liste der verfügbaren Vorlagen hinzuzufügen, geben Sie oben in der neuen Datei Folgendes ein:

<?php
/*
Template Name: Name of Template
*/
?>

Sie können diese Datei (mithilfe von PHP) ändern, um andere Dateien aufzunehmen oder was auch immer Sie benötigen.

Erstellen Sie dann eine neue Seite in Ihrem WordPress-Blog. Im Seitenbearbeitungsbildschirm wird rechts im Fenster Attributes eine Dropdown-Liste Template angezeigt. Wählen Sie Ihre neue Vorlage aus und veröffentlichen Sie die Seite.

Ihre neue Seite verwendet den in templatename.php definierten PHP - Code.

Quelle: https://developer.wordpress.org/themes/template-files-section/page-template-files/#creating-custom-page-templates-for-global-use

355
Adam Hopkinson

Wenn Sie Ihre eigene .php-Datei erstellen und mit Wordpress ohne 404-Header interagieren möchten und Ihre aktuelle Permalink-Struktur beibehalten möchte, ist KEINE Vorlagendatei für diese 1 Seite erforderlich. Ich habe festgestellt, dass dieser Ansatz in Ihrer .php-Datei am besten funktioniert:

<?php
    require_once(dirname(__FILE__) . '/wp-config.php');
    $wp->init();
    $wp->parse_request();
    $wp->query_posts();
    $wp->register_globals();
    $wp->send_headers();

    // Your Wordpress Functions here...
    echo site_url();
?>

Danach können Sie einfach beliebige Wordpress-Funktionen ausführen. Dies setzt außerdem voraus, dass sich Ihre .php-Datei im Stammverzeichnis Ihrer WordPress-Site befindet, in der sich Ihre wp-config.php-Datei befindet.

Dies ist für mich eine PRICELESS-Entdeckung, da ich require_once(dirname(__FILE__) . '/wp-blog-header.php'); für die längste Zeit verwendet habe, da Wordpress Ihnen sogar sagt, dass dies der Ansatz ist, den Sie zur Integration von Wordpress-Funktionen verwenden sollten möchte, dass Sie diesen Ansatz verwenden. https://codex.wordpress.org/Integrating_WordPress_with_Your_Website

Ich weiß, dass viele Leute diese Frage bereits beantwortet haben und sie hat bereits eine akzeptierte Antwort, aber hier ist ein netter Ansatz für eine .php-Datei innerhalb des Stammverzeichnisses Ihrer WordPress-Site (oder technisch an jeder beliebigen Stelle auf Ihrer Site), die Sie durchsuchen können und laden ohne 404-Header!

EDIT

Nur ein kurzes Update hier. Es gibt eine Möglichkeit, wp-blog-header.php ohne 404-Header zu verwenden, aber dazu müssen Sie die Header manuell hinzufügen. So etwas funktioniert im Stammverzeichnis Ihrer WordPress-Installation:

<?php
    require_once(dirname(__FILE__) . '/wp-blog-header.php');
    header("HTTP/1.1 200 OK");
    header("Status: 200 All rosy");

    // Your Wordpress Functions here...
    echo site_url();
?>

Um Sie alle auf den neuesten Stand zu bringen, ist für diesen Ansatz etwas weniger Code erforderlich, aber es liegt an Ihnen, für welchen Sie 1 verwenden.

23
Solomon Closson

Wenn Sie wie ich sind, möchten Sie manchmal auf WordPress-Funktionen in einer Seite verweisen können, die im CMS nicht vorhanden ist. Auf diese Weise bleibt es backend-spezifisch und kann vom Client nicht versehentlich gelöscht werden.

Dies ist eigentlich ganz einfach, wenn Sie die wp-blog-header.php-Datei mit einem php require() einfügen.

Hier ein Beispiel, das eine Abfragezeichenfolge verwendet, um Facebook-OG-Daten für jeden Beitrag zu generieren. 

Nehmen Sie das Beispiel eines Links wie http://example.com/yourfilename.php?1, wobei 1 die ID eines Posts ist, für den Sie OG-Daten generieren möchten:

Nun in den Inhalten von yourfilename.php, das sich zu unserer Bequemlichkeit im Stammverzeichnis WP befindet:

<?php
    require( dirname( __FILE__ ) . '/wp-blog-header.php' );

    $uri = $_SERVER['REQUEST_URI'];
    $pieces = explode("?", $uri);
    $post_id = intval( $pieces[1] );

    // og:title
    $title = get_the_title($post_id);

    // og:description
    $post = get_post($post_id);
    $descr = $post->post_excerpt;

    // og:image
    $img_data_array = get_attached_media('image', $post_id);
    $img_src = null;
    $img_count = 0;

    foreach ( $img_data_array as $img_data ) {
        if ( $img_count > 0 ) {
            break;
        } else {
            ++$img_count;
            $img_src = $img_data->guid;
        }
    } // end og:image

?>
<!DOCTYPE HTML>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=yes" />
<meta property="og:title" content="<?php echo $title; ?>" />
<meta property="og:description" content="<?php echo $descr; ?>" />
<meta property="og:locale" content="en_US" />  
<meta property="og:type" content="website" />
<meta property="og:url" content="<?php echo site_url().'/your_redirect_path'.$post_id; ?>" />
<meta property="og:image" content="<?php echo $img_src; ?>" />
<meta property="og:site_name" content="Your Title" />
</html>

Da haben Sie es: Generierte Sharing-Modelle für jeden Beitrag anhand des aktuellen Bildes, des Ausschnitts und des Titels des Beitrags! 

Wir hätten eine spezielle Vorlage erstellen und die Permalink-Struktur bearbeiten können, um dies zu tun, aber da dies nur für eine Seite erforderlich ist und wir nicht möchten, dass der Client sie aus dem CMS löscht, schien dies die sauberere Option zu sein.


EDIT 2017:Bitte beachten Sie, dass dieser Ansatz jetzt veraltet ist.

Für WP - Installationen ab 2016+ finden Sie unter https://stackoverflow.com/a/39800534/1958998 zusätzliche Parameter, die vor der Ausgabe Ihrer Seitendaten an den Browser einbezogen werden sollen.

14
DrewT

Das Erstellen der Vorlagenseite ist die richtige Antwort. Fügen Sie dies einfach der Seite hinzu, die Sie im Designordner erstellt haben

<?php
/*
Template Name: mytemplate
*/
?>

Um diesen Code auszuführen, müssen Sie mytemplate als Vorlage der Seite aus dem Backend auswählen 

auf dieser Seite finden Sie die korrekten Angaben. https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/

7
user5742826

Jede Antwort wurde nicht behandelt, wenn Sie eine PHP - Seite außerhalb des WordPress-Designs hinzufügen müssen. Das ist der Weg.

Sie müssen wp-load.php einschließen.

<?php require_once('wp-load.php'); ?>

Dann können Sie eine beliebige WordPress-Funktion auf dieser Seite verwenden.

Die allgemein akzeptierte Antwort von Adam Hopkinson ist keine vollständig automatisierte Methode zum Erstellen einer Seite! Ein Benutzer muss eine Seite manuell im Backend von WordPress (im WP-Admin-Bindestrich) erstellen. Das Problem dabei ist, dass ein gutes Plugin ein vollautomatisches Setup haben sollte und es nicht erforderlich sein sollte, dass Clients Seiten manuell erstellen.

Einige der weithin akzeptierten Antworten beinhalten auch das Erstellen einer statischen Seite außerhalb von WordPress, die dann nur einen Teil der WordPress-Funktionalität enthält, um die thematische Kopf- und Fußzeile zu erreichen. Diese Methode kann zwar in einigen Fällen funktionieren, dies kann jedoch die Integration dieser Seiten in WordPress sehr schwierig machen, ohne dass alle Funktionen enthalten sind. 

Ich denke, der beste, vollständig automatisierte Ansatz wäre, eine Seite mit wp_insert_post zu erstellen und diese in der Datenbank abzulegen. Ein Beispiel und eine großartige Diskussion darüber und wie Sie ein versehentliches Löschen der Seite durch einen Benutzer verhindern, finden Sie hier: wordpress-automatic-creation-page

Ehrlich gesagt bin ich überrascht, dass dieser Ansatz nicht bereits als Antwort auf diese beliebte Frage erwähnt wurde (seit 7 Jahren veröffentlicht).

1
Damian Green

Sie möchten einen Blick auf die Plugin-API von WordPress werfen. Hier wird erklärt, wie Sie die verschiedenen Teile der WordPress-Mechanik "einhaken" und "filtern". So können Sie benutzerdefinierten PHP -Code praktisch überall ausführen. Dieses Anhängen, Filtern und Erstellen von benutzerdefiniertem Code kann in der Datei "functions.php" in einem Ihrer Designs erfolgen. Viel Spaß beim Codieren :)

1
hsatterwhite

Erstellen Sie eine Seite, nennen Sie sie my-page.php, und speichern Sie sie unter Ihrem Designverzeichnis .. __ Bearbeiten Sie diese PHP-Datei und schreiben Sie die folgende Zeile oben auf der Seite

<?php /* Template Name: My Page */ ?>

Schreiben Sie Ihren PHP -Code in die Zeile für die Definition benutzerdefinierter Seiten. Sie können Ihre andere WP - Vorlage mit Funktionen in dieser Datei aufrufen.

Starten Sie wie <?php require_once("header.php");?> OR

wie auch immer Sie Ihre Kopf- und Fußzeile integrieren, um das Layout konsistent zu halten.

Da dies eine meine Seite ist, MÜSSEN SIE EINE SEITE aus dem WordPress-Admin-Panel erstellen .. __ Gehen Sie zu Admin => Pages => Add New

Fügen Sie einen Seitentitel hinzu. Je nachdem, wie Sie die benutzerdefinierte Seite codiert haben, können Sie auch den Seitentext (Beschreibung) hinzufügen. Sie können die Beschreibung vollständig überspringen, wenn sie auf der benutzerdefinierten PHP-Seite steht.

Wählen Sie auf der rechten Seite Vorlage aus. Wählen Sie Meine benutzerdefinierte Seite aus der Dropdown-Liste aus. Sie sind fertig! Gehen Sie zu dem Slug (Permalink), der von [wordpress] [1] erstellt wurde, und sehen Sie sich die Seite an.

1
ashish thakor

Sie können die Vorlage in Theme Folder erstellen, bevor Sie Ihren PHP-Code in diese Vorlagendatei einfügen. Wenn Sie dazu einige Dateien benötigen, können Sie diese Dateien in diese Vorlage aufnehmen. Siehe unten.

require_once(dirname(__FILE__) . '/wp-config.php');
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
$wp->send_headers();
// Your Wordpress Functions here...
 echo site_url();
0
Mehul Soni

Versuche dies:

/**
 * The template for displaying demo page
 *
 * template name: demo template
 *
 */
0
Heena Patel

Neben dem Erstellen einer benutzerdefinierten Vorlagendatei und dem Zuweisen dieser Vorlage zu einer Seite (wie im Beispiel in der akzeptierten Antwort) gibt es auch eine Möglichkeit, mit der Namensbenennungskonvention von Wordpress Vorlagen zu laden (Vorlagenhierarchie). Erstellen Sie eine neue Seite und verwenden Sie den Slug dieser Seite für den Dateinamen der Vorlage (Erstellen Sie die Vorlagendatei mit dem Namen page- {slug} .php ). WordPress lädt automatisch die Vorlage, die zu dieser Regel passt.

0
Danijel

Der beste Weg, PHP Seiten in WordPress zu Page Template im Ordner child-theme hinzuzufügen.

So erstellen Sie Page Template in WordPress.

Erstellen Sie eine Datei mit dem Namen template-custom.php und legen Sie sie in /wp-content/theme/my-theme/ ab.

<?php
 /*
 * Template Name: Custom Template
 * Custom template used for custom php code display
 * @package   Portafolio WordPress Theme
 * @author    Gufran Hasan
 * @copyright Copyright templatecustom.com
 * @link      http://www.templatecustom.com
 */
?>
<?php get_header(); ?>
<?php
  //write code here

 ?>

<?php get_footer(); ?>

Für mehr Details

0
Gufran Hasan

Wenn Sie sich nicht mit der API WP beschäftigen möchten, ist Adams Antwort wirklich die beste.

Wenn Sie bereit sind, sich mit der API zu beschäftigen, würde ich vorschlagen, sich an den "template-redirect" -Hook zu binden, der es Ihnen ermöglicht, eine bestimmte URL oder Seite auf eine beliebige PHP -Datei zu verweisen, während Sie weiterhin Zugriff auf die WP haben.

0
Stephen R

erstellen Sie einfach eine page-mytitle.php zum Folter des aktuellen Themas und aus dem Dashboard eine Seite mytitle. Wenn Sie dann die Seite über die URL aufrufen, sehen Sie die page-mytitle.php. Sie müssen dieser PHP-Datei htmp, css, js wp-loop e.t.c hinzufügen (page-mytitle.php).

0

Benennen Sie die neue Datei in templatename.php um (wobei templatename Ihre neue Vorlage sein soll). Um Ihre neue Vorlage zur Liste der verfügbaren Vorlagen hinzuzufügen, geben Sie oben in der neuen Datei Folgendes ein:

Sie können diese Datei (mithilfe von PHP) ändern, um andere Dateien aufzunehmen oder was immer Sie benötigen.

Erstellen Sie dann eine neue Seite in Ihrem WordPress-Blog, und im Seitenbearbeitungsbildschirm wird rechts im Fenster "Attribute" eine Vorlage angezeigt. Wählen Sie Ihre neue Vorlage aus und veröffentlichen Sie die Seite.

0
Nirav Webbleu