it-swarm.com.de

Uploader-Code für benutzerdefinierte Anhänge. Fast dort!

Der folgende Code befindet sich in der Datei functions.php meines Themas und erstellt neben dem Standard-Upload-Symbol ein benutzerdefiniertes Upload-Symbol über dem WordPress-Inhaltseditor.

Über dieses Symbol hochgeladene Bilder erhalten in wp_postmeta eine spezielle Markierung mit dem Namen _imageTop, um sie von den standardmäßig angehängten Bildern zu unterscheiden (damit ich sie als separate Sammlung von "angehängten" Bildern bearbeiten kann).

Es sind 3 Probleme aufgetreten, von denen ich sicher bin, dass es sich um einfache Korrekturen handelt.

1) Der Filter "attachment_fields_to_save" wird nicht angewendet, obwohl ich den Echo-Text im Fenster "media-upload.php" sehen kann. Ich weiß das, weil das _imageTop-Meta nur in die Datenbank geschrieben wird, wenn ich die if (isset) -Prüfung auskommentiere

2) Nachdem die Bilder hochgeladen wurden, muss ich auf "Alle Änderungen speichern" klicken, um das Meta _imageTop zum Speichern in der Datenbank zu erhalten. Idealerweise möchte ich die Daten sofort nach dem Upload speichern, ohne auf "Alle Änderungen speichern" klicken zu müssen. Dies liegt wahrscheinlich an der Tatsache, dass der attachment_fields_to_save-Handler nur für den Hook "Save all changes" ausgelöst wird. Trotzdem möchte ich herausfinden, wie ich es zum Brennen bringen kann, wenn die Bilder hochgeladen wurden.

3) Ich möchte den Link "In Beitrag einfügen" vom Bildschirm entfernen.

//Upload custom images
function my_customImages($initcontext)
{
    global $post;
    ?>
<script type="text/javascript">
jQuery(document).ready(function() {
    var fileInput = '';
    jQuery('#wpe-uploadAttachments').click(function() {
        fileInput = jQuery(this).prev('input');
        formfield = jQuery('#upload_image').attr('name');
        post_id = jQuery('#post_ID').val();
        tb_show('my Product Images', 'media-upload.php?post_id='+post_id+'&type=image&my_idCustomAttachment=true&TB_iframe=true');
        return false;
    });

});
</script>
    <?php
    return $initcontext. '<input type="hidden" id="post_ID" value="'. $post->ID .'" />&nbsp;&nbsp;&nbsp;Product Images:<a id="wpe-uploadAttachments" href="javascript:;" class="mceButton mceButtonEnabled" onmousedown="return false;" onclick="return false;" title="Click here to upload your product images for this post"><img src="'.get_bloginfo('template_directory') .'/img/upload-icon.gif"" /></a>';
}
add_filter('media_buttons_context', 'my_customImages');

function my_image_attachment_fields_to_save($post, $attachment) {
    update_post_meta($post['ID'], '_imageTop', true);
    return $post;
}

if(isset($_GET['my_idCustomAttachment'])){
    echo "This is true";
    add_filter("attachment_fields_to_save", "my_image_attachment_fields_to_save", null , 2);
}
4
Scott B

1) Der Filter "attachment_fields_to_save" wird nicht angewendet, obwohl ich den Echo-Text im Fenster "media-upload.php" sehen kann. Ich weiß das, weil das _imageTop-Meta nur in die Datenbank geschrieben wird, wenn ich die if (isset) -Prüfung auskommentiere

Versuchen Sie, $ _GET mit $ _POST auszutauschen und prüfen Sie, ob es funktioniert. In diesem Fall müssen Sie auch nach $ _POST suchen.

2) Nachdem die Bilder hochgeladen wurden, muss ich auf "Alle Änderungen speichern" klicken, um das Meta _imageTop zum Speichern in der Datenbank zu erhalten. Idealerweise möchte ich die Daten sofort nach dem Upload speichern, ohne auf "Alle Änderungen speichern" klicken zu müssen. Dies liegt wahrscheinlich an der Tatsache, dass der attachment_fields_to_save-Handler nur für den Hook "Save all changes" ausgelöst wird. Trotzdem möchte ich herausfinden, wie ich es zum Brennen bringen kann, wenn die Bilder hochgeladen wurden.

Wenn es nicht abgefeuert wird, können Sie es nur selbst abfeuern, z. Rufen Sie die Hook-Funktion direkt auf. Wenn dies nicht möglich ist (z. B. Sie haben keinen Code ausgeführt, sodass Sie keinen zusätzlichen Code ausführen können), müssen Sie nach einer anderen Aktion suchen, in die Sie sich einbinden können, z. Eine, die nach dem Upload ausgelöst wird. Wahrscheinlich gibt es einen Haken, wenn das Bild in der Medienbibliothek gespeichert wird. Sie können dann auch Ihr benutzerdefiniertes Post-Feld (!) In der Datenbank speichern. Nur um es zu retten. Ich weiß nicht, ob WP das mit seinem Revisionssystem bewältigen kann, also müssen Sie es versuchen.

3) Ich möchte den Link "In Beitrag einfügen" vom Bildschirm entfernen.

Ich weiß nicht, wie das von meinem Kopf aus gemacht werden kann. Sie sollten den Kerncode überprüfen, wenn es etwas gibt, das Sie mit/durch einen Haken überschreiben können.

1
hakre