Ich habe ein Plugin, das auf der folgenden Seite ein Panel erstellt:
mysite.com/wp-content/plugins/myplugin/includes/mypanel.php
Ich möchte dieses Panel auf der folgenden Seite verwenden
mysite.com/mypanel
Die Lösung, die ich versucht habe, war die Verwendung mypanel.php
als Seitenvorlage wie folgt:
add_filter( 'page_template', 'wpa3396_page_template' );
function wpa3396_page_template( $page_template )
{
if ( is_page( 'mypanel' ) ) {
$page_template = dirname( __FILE__ ) . '/includes/mypanel.php';
}
return $page_template;
}
Auf diese Weise wird die Seite angezeigt, aber kein Javascript funktioniert. Also habe ich versucht, das Javascript des Plugins in Funktionen PHP zu importieren.
add_action('wp_enqueue_scripts','Load_Template_Scripts_wpa83855');
function Load_Template_Scripts_wpa83855(){
if ( strpos(get_page_template(), 'mypanel.php') !== false ) {
wp_enqueue_script('wtd', $_SERVER['DOCUMENT_ROOT'].'/wp-content/plugins/myplugin/js/wtd.js');
}
}
Was zu 403 verbotenen Fehlern führte. Ich habe versucht, einen .htaccess-Ordner zur Seite des Plugins hinzuzufügen, aber es gab weiterhin Fehler.
Bitte sagen Sie mir, wie Sie dieses Problem richtig lösen können.
EDIT: Nach einigen Antworten unten (danke an alle). Ich habe meine Codes auf die Seite meines Plugins verschoben und keinen verbotenen Fehler mehr. Aber meine Schaltflächen funktionieren nicht und ich habe das Gefühl, dass meine JS-Datei nicht über die Seite läuft.
Meine js-Datei beginnt mit: jQuery(document).ready(function()
Hier der endgültige Code auf der Plugin-Seite:
/* Make tisort-tasarla page as template */
add_filter( 'page_template', 'wpa3396_page_template' );
function wpa3396_page_template( $page_template )
{
if ( is_page( 'tisort-tasarla' ) ) {
$page_template = dirname( __FILE__ ) . '/includes/tshirt-designer-design-template.php';
}
return $page_template;
}
/* Add Javascript to T-Shirt Design Page */
add_action('wp_enqueue_scripts','Load_Template_Scripts_wpa83855');
function Load_Template_Scripts_wpa83855(){
if ( is_page( 'tisort-tasarla' ) ) {
wp_enqueue_script( 'wtd', plugins_url( '/js/wtd.js' , __FILE__ ), array( 'jquery' ));
}
}
.htaccess
Datei blockiert ? Versuchen Sie auchplugins url()
, den Pfad zu Ihrem Plugins-Verzeichnis abzurufen und zu prüfen, ob dies hilfreich ist.Antworten:
Ihr CODE ist in Ordnung. Der Grund für die Fehlermeldung 403 ist, dass
$_SERVER['DOCUMENT_ROOT']
der absolute Pfad an Ihr Webstamm und nicht an die URL zurückgegeben wird.JavaScript muss als URL hinzugefügt werden. Sie können also die
Load_Template_Scripts_wpa83855
Funktion in Ihrem Plugin verwenden und dann Folgendes verwenden:CODE zum Hinzufügen von JavaScript.
Vollständiger CODE (aktualisiert):
Hier ist der vollständige CODE für Ihre Bequemlichkeit (fügen Sie ihn in Ihre Haupt-Plugin-Datei ein):
quelle
wp_enqueue_script( 'wtd', plugins_url( '/js/wtd.js' , __FILE__ ), array( 'jquery' ) );
. Dieser CODE weist WordPress an, Ihr Skript nach jQuery zu laden. Außerdemplugins_url()
funktioniert die Funktion in derfunctions.php
Datei Ihres Themas nicht . Fügen Sie diesen CODE in Ihre Haupt-Plugin-Datei ein, wie ich bereits sagte./includes/tshirt-designer-design-template.php
Vorlagendatei enthält Rufen Sie diewp_head()
WordPress-Funktion kurz vor dem HTML-Ending-</head>
Tag auf undwp_footer()
rufen Sie kurz vor dem Ending-</body>
Tag auf. Ohne diese beiden Funktionen werden Kopf- und Fußzeilenskripte und -stile nicht geladen.Wenn Sie bereits eine Seite namens "mypanel" haben oder haben möchten, können Sie den
page_template
Filter verwenden, um die auf dieser Seite verwendete Vorlage zu filtern. Ich gehe davon aus, dass Sie das tun.Wir können den
page_template
Filter verwenden, um eine benutzerdefinierte Vorlage für diese Seite zu verwenden. Bei Verwendung dieses Filters können wir eine Aktion hinzufügen, um für diese Seite spezifische Skripte in die Warteschlange zu stellen.In der
/includes/mypanel.php
Template - Datei, stellen Sie sicher anrufenwp_head()
undwp_footer()
ansonsten die Warteschlange eingereiht Skripten werden nicht gedruckt.quelle
$page_template
muss Pfad sein, nicht URL.