1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Bilder von der Editor-Auswahl ausschließen

Dieses Thema im Forum "Konfiguration" wurde erstellt von the5kyliner, 19. Mai 2021.

  1. the5kyliner

    the5kyliner Active Member

    Registriert seit:
    18. September 2012
    Beiträge:
    36
    Zustimmungen:
    1
    Hallo zusammen,

    Setup

    ich fahre eine aktuelle WordPress Installation. Der ganze Auftritt wird modular mittels ACF (Advanced Custom Fields) aufgebaut. Ich habe mit ACF ein WYSIWYG-Modul (bei ACF heißt das "Layout") gebaut. Darin ist der einfache/alte WP Editor als Feld eingebunden (also nicht der Gutenberg). Außerdem ist "Advanced Editor Tools (previously TinyMCE Advanced)" installiert.

    Anforderung

    Da ich für Bild-Einbindungen eigene Module habe, möchte ich verhindern, dass der User über den "Dateien hinzufügen"-Dialog Bilder einbinden kann. Er soll aber weiterhin PDFs, DOCs etc. auswählen und verlinken können.

    Problem

    Bisher konnte ich aber nur Hooks finden, die auch den _Upload_ von Bildern unterbinden. Das möchte ich natürlich nicht, da der User ja weiterhin Bilder hochladen können, aber eben nur in den dafür vorgesehenen Modulen einbinden, soll.

    Ich hatte schon den Hook "media_view_settings" ausprobiert und dort mittels "unset($settings['mimeTypes']['image'])" den Bild MIME-Type rausgenommen. Das hat aber leider nichts gebracht.

    Eine denkbare Alternative wäre es, im normalen Link-Dialog nicht nur nach Seiten, sondern auch nach Dateien suchen zu können. Aber auch dazu konnte ich nichts finden.

    Hat jemand eine Idee?
    Die langweilige Lösung wäre es den Button "Dateien hinzufügen" mit ACF auszublenden. Dann müsste sich der User aber immer erst die Media-URL zurecht kopieren und sie dann über den Link-Dialog einbinden.

    Über Ideen wäre ich sehr dankbar.

    Besten Gruß
    Nick
     
  2. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.683
    Zustimmungen:
    1.786
    Hier ein möglicher Ansatz anhand von Codebeispielen in der wordpress.org Dokumentation, Tests auf Nebenwirkungen vorausgesetzt...
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  3. the5kyliner

    the5kyliner Active Member

    Registriert seit:
    18. September 2012
    Beiträge:
    36
    Zustimmungen:
    1
    Vielen vielen Dank, b3317133!

    Das Filtern hat damit funktioniert.
    Ich habe das noch so umgeschrieben, dass er einfach alle Types rausfiltert, die mit "image" beginnen:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Neues Problem was sich dadurch leider ergibt, woran ich nicht gedacht habe: ACF benutzt auch bei den Bild-Modulen dieses Media-Popup und nun kann man nirgends mehr ein Bild auswählen. Ich muss mir also überlegen ob ich irgendwie an den ACF Context (also ob es gerade um den Editor geht oder nicht) rankomme.

    Falls ich was finde, meld ich mich. Oder falls da jemand eine Idee zu hat, gerne melden.
     
  4. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.683
    Zustimmungen:
    1.786
    Bzgl. des neuen Problems auch der Hinweis:
    Schau Dir z.B. die Parameter in $query an, die bei den jeweiligen Aufrufen in ajax_query_attachments_args ankommen, evtl. kannst Du da eine Unterscheidung feststellen. Alternativ kann man in PHP evtl. über debug_backtrace() die Herkunft des Aufrufs feststellen und so entscheiden, wann man die Bilder rausnimmt und wann nicht. Oder man begibt sich in die JavaScript Welt der Seite und versucht, alleine darüber in die Parameter für den gewünschten Button einzugreifen oder schickt einen eigenen Parameter mit, der dann von einem PHP Filter Code erkannt werden kann. Entdecke die Möglichkeiten, viel Erfolg beim Basteln.
     
    #4 b3317133, 19. Mai 2021
    Zuletzt bearbeitet: 20. Mai 2021
  5. the5kyliner

    the5kyliner Active Member

    Registriert seit:
    18. September 2012
    Beiträge:
    36
    Zustimmungen:
    1
    Ich habe es nun maximal kompliziert umgesetzt :D

    Der PHP Code, bspw. in der functions.php sieht so aus:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dazu kommt dann die JS Datei unter "{plugin_dir}/assets/js/media_button.js":
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und zu guter letzt noch den eigentlichen Media-Button ausblenden:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Et voilà! Bei ACF muss dann außerdem noch bei jedem WYSIWYG Editor Feld "media_upload" aktiviert sein. Sonst wird der neue Button nämlich nicht ausgespielt. Deshalb muss man auch den eigentlichen Button ausblenden.
     
  6. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.683
    Zustimmungen:
    1.786
    Falls noch Lust für weitere Experimente:

    Über ein Javascript in der Seite könnte man auch die Click-Events von allen Media-Buttons entfernen und dann selektiv je nach Wunsch wieder (mit direkt angepassten options oder auch dem Hinzufügen eines eigenen Parameter für das Erkennen eines ggf. genutzten serverseitigen PHP Filters) einhängen, basierend auf dem Code in media-editor.js
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.683
    Zustimmungen:
    1.786
    Sehe gerade, im Experimentiervorschlag gingen die preventDefault Zeilen verloren, müsste man noch analog zu media-editor.js ergänzen...
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden