Support » Allgemeine Fragen » Mein erstes Plugin Fehlermeldung beim aktivieren
Mein erstes Plugin Fehlermeldung beim aktivieren
-
Ich habe mir ein kleines Plugin geschrieben. Leider bekomme ich folgende Fehlermeldung beim aktivieren.
Im Internet arbeitet es auch nicht richtig auf dem localhost läuft es normal.
Das Plugin verursachte eine Fehlermeldung 1 Zeichen unerwartete Ausgabe während der Aktivierung. Sollte du Fehlermeldungen wie “headers already sent”, Probleme mit der Syndizierung der Feeds oder andere Fehler erhalten, versuche das Plugin zu deaktivieren oder zu löschen.
Hier habe ich eine ZIP Datei hochgeladen:
http://forum.wpde.org/attachments/plugins-und-widgets/8809d1388072522-plugin-laeuft-im-web-nicht-mybooks.zip
Ich hoffe das mir da jemand Helfen kann und sich den Code einmal anschauen kann.Im WordPress Forum bekomme ich leider keine Antworten oder Hilfe.
-
Siehe: http://faq.wpde.org/cannot-modify-header-information/
Schau mal in der index.php ganz am Ende, da ist nach dem ?> noch ein Leerzeichen. Lösche das mal. Tritt der Fehler dann noch auf?
Und bedenke, dass wp-content verschoben werden kann:
http://codex.wordpress.org/Editing_wp-config.php#Moving_wp-content_folderEs gibt WP-Funktionen mit denen auf die Ordner zugegriffen werden kann, sonst funktioniert das Plugin nicht merh, wenn der Ordner woanders ist.
Gruß, Torsten
Hallo,
wenn du den Debugmodus aktivierst ( http://codex.wordpress.org/Debugging_in_WordPress ) wirst du sehen, das WP folgendes 5 x meldet beim aktivieren deines Plugins.
Notice: has_cap wurde mit einem Parameter oder Argument aufgerufen, der seit Version 2.0 veraltet ist! Die Benutzung von
user_level
in Plugins und Themes ist veraltet. Nutze stattdessen das Abfragen vonroles
odercapabilities
. in /Users/staude/Projekte/wpdev/wp-includes/functions.php on line 3006Ich persönlich halte es für eine gute Idee auf dem Entwicklungssystem den DEBUG Modus IMMER aktivert zu haben, das hilft auch sauberen Code zu schreiben, der keine Warnings und Notices wirft. Macht auch das Fehlersuchen einfacher wenn nach einem Update es irgendwo hakt und man nicht erst viele Meldungen analysieren muss die nichts mit dem eigentlichen Problem zu tun haben.
add_menu_page ( http://codex.wordpress.org/Function_Reference/add_menu_page ) und ad_submenu_page ( http://codex.wordpress.org/Function_Reference/add_submenu_page ) erwarten eine capability und nehmen keinen Userlevel mehr entgegen. Das führt zu deiner Fehlermeldung.
Erlaube mit noch ein paar Anmerkungen.
– Du verwendest eine eigene Tabelle, ohne die BlogID abzufragen. Das wird dazu führen das in einer Multisite Installation alle Sites mit einer gemeinsamen Tabelle arbeiten werden. Meistens ist das nicht das, was man möchte. http://codex.wordpress.org/Class_Reference/wpdb#Multi-Site_Variables
– Die Dateien sind nicht UTF8, was bei mir schon mal zu defekten Umlauten führt.
– Auch wenn du es nicht übersetzen willst, arbeite immer mit den __ Translatefunktionen, macht es leichter Text auszutauschen.
– Eigene Hooks einbauen, macht das Leben leichter wenn man bei der zweiten Installation an irgendeiner Stelle mal was ein weing anders haben will – und wenn es z.B. nur das Childtheme ist das an einer Stelle einen anderen Text verwenden soll.
– In der Index in Zeile 41 hast du noch wp_mybook festgecodet drinstehen.
– in der edit.php nimmst du die ID ungeprüft entgegen und arbeitest dann mit ihr. Du könntest sie zumindest nach INT casten, da die ID immer Numerisch ist.
http://codex.wordpress.org/Data_ValidationNoch besser ist natürlich, in den Datenbankabfragen mit Prepared Statements zu arbeiten.
http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_AttacksGruß
FrankDanke für die Infos.
Mit dem normalen PHP komme ich ganz gut zurecht und kann einfach Sachen erstellen. Aber mit dem WordPress Plug In erstellen komme ich nicht klar.
Kann mir da nicht jemand Helfen und das Script anpassen, damit das korrekt Funktioniert?
Ich habe nun ein Plug-In E-Paper gefunden mit dem ich ein Flash-Magazin Archiv erstellt habe.
Jetzt bräuchte ich nur noch ein weiteres Feld Tourbeschreibung in diesem Plug-In, wo ich einen Link zu einem Artikel einfügen kann.
Mfg Maffylein
Jetzt bräuchte ich nur noch ein weiteres Feld Tourbeschreibung in diesem Plug-In, wo ich einen Link zu einem Artikel einfügen kann.
Vielleicht ist der Weg über Custom Post Type und Custom Fields die Lösung für dich:
http://www.elmastudio.de/wordpress/jede-menge-moeglichkeiten-benutzerdefinierte-felder-in-wordpress/Das Prinzip dieses Forum ist: Hilfe zur Selbsthilfe. Wir können dir nicht dein Plugin programmieren, aber wir können dir helfen beim Testen oder Hinweise geben, wenn Du bereit bist zu Lernen.
Viel Erfolg!
Gruß, Torsten
Ich habe nun das Plugin Types – Complete Solution for Custom Fields and Types installiert und ein Benutzerdefiniertes Feld erstellt. Das Feld erscheint nun nur im E-Paper Plug-In.
Wie greife ich nun auf dieses Benutzerdefiniertes Feld
in meiner Archiv Template zu? Das Feld heißt artikelurlHallo maffylein,
Custom Fields (oder Benutzerdefinierte Felder in der der deutschen Version) speichern die Daten jeweil im Kontext des Posts/Page
http://codex.wordpress.org/Custom_FieldsIn deinem Template kannst du mit der Funktion get_post_meta ( http://codex.wordpress.org/Function_Reference/get_post_meta ) die Werte zugreifen.
Gruß
Frank$tourguid_url ist die artikelurl
leider tut sich da nichts.
<?php /* Template Name: EPaper Archive */ // WordPress Kopfbereich laden get_header(); ?> <div id="container"> <div id="content" role="main"> <?PHP // Text über der Tabelle. Inhalt einer normalen Seite (Page). if ( have_posts() ) { while ( have_posts() ) { the_post(); the_title('<h1>', '</h1>'); the_content('<p><strong>Weiterlesen …</strong></p><br><br>'); link_pages('<p><strong>Seiten:</strong> ', '</p>', 'number'); edit_post_link('Beitrag bearbeiten', '<p>', '</p>'); } } /** * @var object $myQuery Liste aller Artikel. */ $buecher = new WP_Query( array( 'post_type' => 'epaper' ) ); while ( $buecher->have_posts() ) : $buecher->the_post(); ?> <div id="box"> <h2> <?PHP the_title(); ?> </h2> <?PHP if ( !empty($post->post_excerpt) ) { $_my_excerpt = $post->post_excerpt; // Für Browser, die keinen Umbruch im Tooltip zeigen: $_my_excerpt = str_replace("\r\n", " \r\n ", $_my_excerpt); $_my_excerpt = strip_tags($_my_excerpt); $_my_excerpt = htmlspecialchars($_my_excerpt, ENT_QUOTES); } else { $_my_excerpt = substr( $post->post_content, 0, 100); $_my_excerpt = str_replace("\r\n", " \r\n ", $_my_excerpt); $_my_excerpt = strip_tags($_my_excerpt); $_my_excerpt = htmlspecialchars($_my_excerpt, ENT_QUOTES); // ANPASSEN! // @see http://toscho.de/2009/php-funktion-end_on_word/ $_my_excerpt = XWP::end_on_word($_my_excerpt) . ' …'; } $querystr = "SELECT * FROM $wpdb->postmeta Where post_id = ".$post->post_id.""; ?> <div style="float:left;"> <?php if ( has_post_thumbnail() ) {?> <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" class="artikelbild"> <?php the_post_thumbnail( ); ?></a> <?PHP } ?> </div> <?PHP print "<div>$_my_excerpt"; print"<span style=\"float:right;\">"; // Link zum E-Paper $epaperurl = get_post_meta($post->ID, 'epaper_meta_realepaper', true); print '<br><b>Wanderführer zum Online durchblättern</b> <a href="' . $epaperurl . '" target\"_blank\">' . __('Epaper', 'epaper') . '</a></br>'; // Link zum E-Paper $epaper_pdfurl = get_post_meta($post->ID, 'epaper_meta_pdf', true); print '<b>Wanderführer zum herunterladen</b> <a href="' . $epaper_pdfurl . '" target\"_blank\">' . __('PDF Download', 'epaper') . '</a></br>'; $tourguid_url = get_post_meta($post->ID, 'artikelid', true); print "<p>$tourguid_url</p>"; print "</span></div>"; ?> </div> <br clear="all"> <?PHP endwhile; ?> </div><!-- #content --> </div><!-- #container --> <?php get_sidebar(); ?> <?php get_footer(); ?>
Hallo,
leider tut sich da nichts.
Ich vermute mal du meinst, das $tourguid_url leer ist.
Dann prüfe was $post->ID enthält und ob das die korrekte ID des CPT Beitrags ist, von dem du das CF hoen willst.
Wenn die ID korrekt ist, prüfe in der Datenbank ob das CF auch wirklich gesetzt ist (100% korrekte Schreibweise?)Gruß
Frankich habe mit meta() die werte ausgelesen und das Benutzerdefnierte Feld das ich mit dem Plug in angelegt habe wird nicht ausgegeben.
Dies hängt mit dem post typ von epaper zusammen da wird das Feld nicht ausgewertet.
Ich habe gesehen, das man mit dem Plug In auch eigene Post Typen anlegen kann. Gibt es dafür auch eine Deutsche Beschreibung oder Tutorials für das Plug In.
Hallo,
Ellen hat da mal einen zweiteilgen Artikel über Custon Post Types geschrieben
Ansosnten siehe im Codex http://codex.wordpress.org/Post_Types#Custom_Post_Types
Gruß
FrankIch habe nun nach langem Suchen einen Code Schnipsel gefunden.
Nun werden auch die Kategorien mit ausgegeben.`add_action( ‚init‘, ‚create_post_type‘ );
function create_post_type() {
$labels = array(
’name‘ => _x(‚Books‘, ‚post type general name‘),
’singular_name‘ => _x(‚Book‘, ‚post type singular name‘),
‚add_new‘ => _x(‚Add New‘, ‚book‘),
‚add_new_item‘ => __(‚Add New Book‘),
‚edit_item‘ => __(‚Edit Book‘),
’new_item‘ => __(‚New Book‘),
‚view_item‘ => __(‚View Book‘),
’search_items‘ => __(‚Search Books‘),
’not_found‘ => __(‚No books found‘),
’not_found_in_trash‘ => __(‚No books found in Trash‘),
‚parent_item_colon‘ => “,
‚menu_name‘ => ‚Books‘);
$args = array(
‚labels‘ => $labels,
‚public‘ => true, // Öffentlich zugänglich
‚publicly_queryable‘ => true,
’show_ui‘ => true, // Im Administrationsbereich anzeigen
’show_in_menu‘ => true, // Im Menü anzeigen
‚query_var‘ => true, // Für eigene Querys zugänglich machen
‚rewrite‘ => true,
‚capability_type‘ => ‚post‘,
‚has_archive‘ => true,
‚hierarchical‘ => true,
‚menu_position‘ => null,
’supports‘ => array(‚title‘,’editor‘,’thumbnail‘,’excerpt‘,’comments‘,’customfields‘),
‚taxonomies‘ => array( ‚category‘, ‚post_tag‘ ), // add default post categories and tags
‚public‘ => true,
‚rewrite‘ => array(’slug‘ => ‚custom‘)
);register_post_type( ‚book‘, $args );
register_taxonomy_for_object_type( ‚category‘, ‚book‘ );}
// hook into the init action and call create_book_taxonomies when it fires
add_action( ‚init‘, ‚create_book_taxonomies‘, 0 );// create two taxonomies, genres and writers for the post type „book“
function create_book_taxonomies() {
// Add new taxonomy, make it hierarchical (like categories)
$labels = array(
’name‘ => _x( ‚Regionen‘, ‚taxonomy general name‘ ),
’singular_name‘ => _x( ‚Region‘, ‚taxonomy singular name‘ ),
’search_items‘ => __( ‚Search Region‘ ),
‚all_items‘ => __( ‚All Regionen‘ ),
‚parent_item‘ => __( ‚Parent Region‘ ),
‚parent_item_colon‘ => __( ‚Parent Region:‘ ),
‚edit_item‘ => __( ‚Edit Region‘ ),
‚update_item‘ => __( ‚Update Region‘ ),
‚add_new_item‘ => __( ‚Add New Region‘ ),
’new_item_name‘ => __( ‚New Region Name‘ ),
‚menu_name‘ => __( ‚Region‘ ),
);$args = array(
‚hierarchical‘ => true,
‚labels‘ => $labels,
’show_ui‘ => true,
’show_admin_column‘ => true,
‚query_var‘ => true,
‚rewrite‘ => array( ’slug‘ => ‚region‘ ),);
register_taxonomy( ‚region‘, array( ‚book‘ ), $args );
}
add_filter( ‚pre_get_posts‘, ‚my_get_posts‘ );
function my_get_posts( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( ‚post_type‘, array( ‚post‘, ‚page‘, ‚book‘, ‚region‘ ) );return $query;
}// Alle Datensätze anzeigen
function add_custom_types_to_tax( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars[’suppress_filters‘] ) ) {// Get all your post types
$post_types = array( ‚post‘, ‚book‘ );$query->set( ‚post_type‘, $post_types );
return $query;
}
}
add_filter( ‚pre_get_posts‘, ‚add_custom_types_to_tax‘ );Ich habe nun nach langem Suchen einen Code Schnipsel gefunden.
Nun werden auch die Kategorien mit ausgegeben.add_action( 'init', 'create_post_type' ); function create_post_type() { $labels = array( 'name' => _x('Books', 'post type general name'), 'singular_name' => _x('Book', 'post type singular name'), 'add_new' => _x('Add New', 'book'), 'add_new_item' => __('Add New Book'), 'edit_item' => __('Edit Book'), 'new_item' => __('New Book'), 'view_item' => __('View Book'), 'search_items' => __('Search Books'), 'not_found' => __('No books found'), 'not_found_in_trash' => __('No books found in Trash'), 'parent_item_colon' => '', 'menu_name' => 'Books' ); $args = array( 'labels' => $labels, 'public' => true, // Öffentlich zugänglich 'publicly_queryable' => true, 'show_ui' => true, // Im Administrationsbereich anzeigen 'show_in_menu' => true, // Im Menü anzeigen 'query_var' => true, // Für eigene Querys zugänglich machen 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => true, 'menu_position' => null, 'supports' => array('title','editor','thumbnail','excerpt','comments','customfields'), 'taxonomies' => array( 'category', 'post_tag' ), // add default post categories and tags 'public' => true, 'rewrite' => array('slug' => 'custom') ); register_post_type( 'book', $args ); register_taxonomy_for_object_type( 'category', 'book' ); } // hook into the init action and call create_book_taxonomies when it fires add_action( 'init', 'create_book_taxonomies', 0 ); // create two taxonomies, genres and writers for the post type "book" function create_book_taxonomies() { // Add new taxonomy, make it hierarchical (like categories) $labels = array( 'name' => _x( 'Regionen', 'taxonomy general name' ), 'singular_name' => _x( 'Region', 'taxonomy singular name' ), 'search_items' => __( 'Search Region' ), 'all_items' => __( 'All Regionen' ), 'parent_item' => __( 'Parent Region' ), 'parent_item_colon' => __( 'Parent Region:' ), 'edit_item' => __( 'Edit Region' ), 'update_item' => __( 'Update Region' ), 'add_new_item' => __( 'Add New Region' ), 'new_item_name' => __( 'New Region Name' ), 'menu_name' => __( 'Region' ), ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'region' ), ); register_taxonomy( 'region', array( 'book' ), $args ); } add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( is_home() && $query->is_main_query() ) $query->set( 'post_type', array( 'post', 'page', 'book', 'region' ) ); return $query; } // Alle Datensätze anzeigen function add_custom_types_to_tax( $query ) { if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) { // Get all your post types $post_types = array( 'post', 'book' ); $query->set( 'post_type', $post_types ); return $query; } } add_filter( 'pre_get_posts', 'add_custom_types_to_tax' );
- Das Thema „Mein erstes Plugin Fehlermeldung beim aktivieren“ ist für neue Antworten geschlossen.