Beiträge von n.k

    Moin

    habe CPT (Custom Post Types) mit Taxonomies angelegt, alles gut

    kann ich bzw. ween ja wie: bereits bestehende (normale) in einen jweiligen CPT überführen/verschieben ?

    bitte keine Plugins benennen, sondern wie dies per Script (technisch) umgesetzt werden könnte
    oder zumindest einen Tipp/Stichwort welche Funktion(en) es hierfür braucht

    VG
    Norbert

    hab's gelöst:

    wp_upload_handler ist eigentlich nur fürs System gedacht und kann auch nur mit angemeldeten Admin-User ausgeführt werden

    für das Frontend eignet sich
    wp_upload_bits ()

    habe das damit nun umgesetzt und läuft einwandfrei

    apply_filters aus dem Code gelöscht

    die Funktion für den Shortcode sieht so aus:

    ergänzend sei noch erwähnt:
    in der wp-config.php ist folgende Zeile eingefügt:

    Code
    define( 'ALLOW_UNFILTERED_UPLOADS', true );

    Ergebnis: alles wie gehabt, mime-type nicht erlaubt, es funktioniert nicht

    habe mal das Plugin als ZIP beigefügt,
    lt. habt ihr das Gleiche Phänomen oder noch einen Tipp ...

    VG
    Norbert

    Moin

    danke für Deine Rückmeldung und den Link.
    Den hatte ich auch schon gesehen.
    habe auch neben dem Wordpress Plugin Buch von F. Simeth weitere Bücher zum Thema Plugins mit Wordpress hier liegen
    und bin die durchgegangen

    habe jetzt folgenden Code:

    Startdatei Plugin

    Code
    ...
    // //actions
    add_shortcode('nkt2c', 'nkt2c_forms');
    add_filter( 'upload_mimes', 'nkt2c_mime_types' );
    add_action( 'wp_enqueue_scripts', 'add_nkt2c_css' );
    add_action( 'wp_enqueue_scripts', 'add_nkt2c_js' );
    add_action( 'admin_menu', 'nkt2c_menu');
    ...

    nach meinem Verständnis wird mit add_filter erstmal nur die Function in WP registriert (bekannt gegeben)

    in der Functions-Datei ist u.a. dann folgendes :

    damit das nun aber getriggert wird müsste ich vor wp_handle_upload einfügen ?

    Code
    $nkt2c_tmp = apply_filters( 'upload_mimes', $t, $user );

    weil mit apply_filters die Funktion ausgeführt wird,
    so mein Verständnis der Bücher und Beschreibungen

    sicherlich mache ich noch irgendwo einen Denkfehler ... ?
    die Parameter $t und $user müssen sicherlich mit entsprechenden Werten gesetzt werden aber welchen machen hier Sinn ?

    bin schon sehr über den Ton irritiert ...

    die Online Meetings sind da wesentlich freundlicher.

    davon abgesehen, habe ich das mal nach der Reference von upload_mimes angepasst

    das Verhalten ist das Gleiche:

    nach Aktivierung des Plugins funktioniert der Upload von TXT-Files
    schliesse ich den Browser und rufe die Seite wieder auf, kommt wieder der Hinweis : mime type nicht erlaubt

    in manchen Quellen findet man einen Hinweis auf die functions.php des Themes ...
    aber das wäre doch unlogisch sie darein zu packen
    grade add_filter sollte doch von überall lt. Doku aufrufbar sein ...

    wo ist mein Denkfehler ?

    Moin Leute

    in einem Plugin soll der der Upload von TXT-Dateien ermöglcht werden, damit diese dann verarbeitet und in Tabellenform angezeigt bzw. als CSV zum Download bereitgestellt werden.

    Da WP per Core TXT-Files nicht zulässt, würde ich dieses gerne im Plugin erlauben.

    Hierzu gibt es ja add_filter um die Mime-Types zu verwalten.

    Leider komme ich an der Stelle nicht richtig weiter:

    wenn ich das Plugin aktiviere und im Browser anschliessend direkt auf Upload gehe, funktioniert es. Die TXT-Datei wird ins .../wp-content/uploads/... übernommen

    wenn ich den Browser aber schliesse und wieder starte und dann den Upload erneut versuche, dann funktioniert er nicht "Sorry, you are not allowed to upload this file type." **

    verstehe die Logik nicht. Prinzipiell scheint es ja zu funktionieren (nach Aktivierung vom Plugin und solange der Browser dann nicht geschlossen wird)

    wieso dann nach erneutem Browserstart dann wieder Filetype nicht erlaubt ?

    zentrale Plugin-Steuerungsdatei :

    ...

    // //actions
    add_shortcode('nkt2c', 'nkt2c_forms');
    add_filter( 'nkt2c_mimes', 'nkt2c_mime_types' );
    add_action( 'wp_enqueue_scripts', 'add_nkt2c_css' );
    add_action( 'wp_enqueue_scripts', 'add_nkt2c_js' );
    add_action( 'admin_menu', 'nkt2c_menu');

    ...

    dann in der functions-Datei vom Plugin :

    function nkt2c_mime_types( $nkt2c_mimes ) {

    // $nkt2c_mimes = array(
    // 'txt' => 'text/plain'
    // );
    // return $nkt2c_mimes;

    // First we unregister the old key
    unset( $mime_types['txt'] );

    // Then we add a new one
    ! isset( $mime_types['txt'] ) AND $mime_types['txt'] = 'text/plain';

    return $mime_types;

    }

    function add_nkt2c_css() {

    wp_register_style( 'nkt2c-css', '/wp-content/plugins/nkTxt2Csv/css/nkt2c-style.css' );
    wp_enqueue_style( 'nkt2c-css', );

    }

    function add_nkt2c_js() {
    wp_enqueue_script( 'nkt2c-js' , '/wp-content/plugins/' . NKT2C . '/js/nkt2c-script.js' );
    }

    function nkt2c_forms($atts, $content) {

    $content = do_shortcode($content);

    $nkt2c_tmp = apply_filters( 'nkt2c_mimes', 'txt' );

    $nkt2c_ret = '
    <form id="nkt2c_form_upload" class="nkt2c_form_upload" enctype="multipart/form-data" action="" method="POST">
    ';

    $nkt2c_ret .= wp_nonce_field( 'nkt2c_file_upload', 'nkt2c_fileup_nonce' );

    $nkt2c_ret .= '
    <input name="nkt2c_file_upload" type="file" />
    <input type="submit" value="Upload file" id="nkt2c_btn_upload" />
    <div id="nkt2c_src">keine Daten vorhanden</div>
    <div id="nkt2c_dst">keine Daten vorhanden</div>
    <div id="nkt2c_download"></div>
    </form>
    ';

    if( wp_verify_nonce( $_POST['nkt2c_fileup_nonce'], 'nkt2c_file_upload' ) ){

    if ( ! function_exists( 'wp_handle_upload' ) ) {
    require_once ABSPATH . 'wp-admin/includes/file.php';
    }

    $nkt2c_file = & $_FILES['nkt2c_file_upload'];

    $nkt2c_overrides = [ 'test_form' => false ];

    $nkt2c_movefile = wp_handle_upload( $nkt2c_file, $nkt2c_overrides );

    if ( $nkt2c_movefile && empty( $nkt2c_movefile['error'] ) ) {
    echo "The file was successfully uploaded.";
    //print_r( $nkt2c_movefile );
    $nkt2c_txtfile = $nkt2c_movefile["file"];
    print_r($nkt2c_txtfile);
    }
    else {
    echo $nkt2c_movefile['error'];
    }
    }

    //remove_filter('nkt2c_mimes', 'txt');

    return $nkt2c_ret;

    }
    Vielen Dank im voraus für eure Unterstützung

    VG

    Norbert