Mit einem normalen Admin kann man Das Plugin nutzen, bei einem Superuser kommt die Fehlermeldung.
Beiträge von derjascha
-
-
Superuser natürlich ...
Der Code befindet sich in einem Plugin, das im Backend ausgeführt wird. Ein Switch-Statement ist nicht vorhanden. Der Code liest Zeilen aus einer .csv-Datei ein und legt Posts mit einem Custom Post Type dafür an. Die Codierung stimmt, die Datei wird richtig ausgelesen und mit einem User mit niedrigeren Rechten wird auch alles brav eingefügt.
Die Zeile "Artikel ... aufgenommen" wird auch dann aufgerufen, wenn nichts eingefügt wird.PHP
Alles anzeigen<?php //Öfnet die angegebene CSV-Datei und arbeitet die Zeilen ab function handleCsv($file) { $csv = fopen($file, 'r'); while (($line = fgetcsv($csv, NULL, ';')) !== FALSE) { if ($id = importLine($line)) { echo '<small>Artikel ' . $line[0] . ' als ' . $id . ' aufgenommen.</small><br>'; } } echo '<p><b>FERTIG! Das hat Spaß gemacht.</b></p>'; fclose($csv); wp_cache_flush(); } // Liest die einzelnen Spalten der Zeile aus und erstellt einen Custom Post Type function importLine($line) { $unique_id = $line[0]; $issue = str_pad(trim($line[1]), 2, '0', STR_PAD_LEFT); $page = trim($line[2]); $title = trim($line[3]); $subtitle = trim($line[4]); $writer = trim($line[5]); $section = trim($line[6]); $rawKeywords = explode(',', $line[7]); $bible = explode(';', $line[8]); $keywords = array_merge($rawKeywords, $bible); array_walk($keywords, 'trim_value'); if (isNewArticle($unique_id) AND isNotEmpty($unique_id, $title)) { //https://codex.wordpress.org/Function_Reference/wp_insert_post $post = [ 'post_content' => NULL, 'post_title' => $title, 'post_status' => 'publish', 'post_type' => 'artikelregister', 'tags_input' => $keywords, 'tax_input' => [ 'issue' => $issue, 'keywords' => $keywords ] ]; $insert = wp_insert_post($post); //http://codex.wordpress.org/Function_Reference/add_post_meta add_post_meta($insert, 'unique_id', $unique_id); add_post_meta($insert, 'page', $page); add_post_meta($insert, 'subtitle', $subtitle); add_post_meta($insert, 'writer', $writer); add_post_meta($insert, 'section', $section); return $insert; } else { return FALSE; } } // Entfernt überflüssige Leerzeichen function trim_value(&$value) { $value = trim($value); } // Überprüft, ob der Artikel mit der unique_id schon vorhanden ist. function isNewArticle($id) { $args = array( 'meta_key' => 'unique_id', 'meta_value' => $id, 'post_type' => 'artikelregister', 'post_status' => 'any', 'posts_per_page' => -1 ); if( get_posts($args) ) { return FALSE; } else { return TRUE; } } // Überprüft, ob die nötigen Felder vorhanden sind und es sich nicht um die erste Zeile handelt. function isNotEmpty($unique_id, $title) { if( $unique_id === '' ) {return false;} if( $title === '' ) {return false;} if( $title == 'Titel' ) {return false;} return true; } -
Hallo zusammen,
ich benutze den folgenden Code, um Posts in ein MU System zu posten.
PHP
Alles anzeigen$post = [ 'post_content' => NULL, 'post_title' => $title, 'post_status' => 'publish', 'post_type' => 'artikelregister', 'tax_input' => [ 'issue' => $issue, 'keywords' => $keywords ] ]; $insert = wp_insert_post($post);
Alles funktioniert, außer wenn ich das Skript mit einem Superuser laufen lasse; dann liefert die Funktion die den FehlerZitatDer Beitrag konnte nicht in die Datenbank eingefügt werden
zurück. get_current_blog_id() liefert die korrekte ID und der Superuser ist auch mit dem Blog verknüpft. Wir suchen schon eine Weile nach dem Fehler, finden allerdings keinen Grund.Lieben Gruß