Hinzufügen von Erinnerungen / Notizen zu neuen Post-Meta-Boxen

7

Ich habe eine Website mit mehreren Autoren und verwende das WyPiekacz-Plugin, um zu verlangen, dass Autoren 1-5 Tags hinzufügen, nur eine einzige Kategorie auswählen und ein ausgewähltes Bild einfügen ( und Mindestabmessungen für das ausgewählte Bild benötigen ).

WyPiekacz kann auch die minimale / maximale Länge von Titel / Inhalt einschränken. WyPiekacz ist großartig, aber es wird dem Autor erst mitteilen, nachdem er etwas falsch gemacht hat, und ihn nicht über die Anforderungen informieren, bevor er einen Fehler macht.

Ich möchte in der Lage sein, jeder Meta-Box eine Notiz / Erinnerung hinzuzufügen, um den Autor anzuleiten. Derzeit habe ich die Notizen direkt in die WordPress-Dateien geschrieben. Hier ist ein Screenshot meiner Hinzufügung.

Tags Meta Box Hinweis Wordpress

Ausgewähltes Bild-Meta-Feld in wp-admin / includes / post.php Tags und Kategorien-Felder in wp-admin / include / meta-boxen.php

Ich möchte diese Hinweise in die Datei functions.php oder als Einstellungen in WyPiekacz aufnehmen.

Ich bin kein Programmierer, daher wäre jede Unterstützung sehr dankbar.

Travis Pflanz
quelle
Bitte vergessen Sie nicht, Antworten zu akzeptieren, die Ihr Problem lösen. Es schreibt diejenigen gut, die Ihnen helfen, und nimmt es auch vom unbeantworteten Stapel.
Stephen Harris

Antworten:

7

Sie sollten niemals die Kerndateien von WordPress bearbeiten.

Stattdessen sollten Sie immer nur Plugin-Dateien und / oder Themendateien (Plugins oder Themes-Ordner) bearbeiten.

Eine der einfachsten Möglichkeiten bestand darin, dies über jQuery zu erreichen.

jQuery('<div/>', {
    id: 'your-note',
    text: 'Add up to 5 tags...etc'
}).appendTo('#tagsdiv-post_tag .inner');

Speichern Sie das Obige in einer Datei alerts.js (oder benennen Sie es wie Sie möchten). Legen Sie diese Datei /theme_name/js/aus organisatorischen Gründen in Ihrem Themenordner ab .

Dann in Ihre Datei functions.php einfügen;

function load_my_alerts(){
      wp_register_script( 
        'my_alerts', 
        get_template_directory_uri() . '/js/alerts.js', 
        array( 'jquery' )
    );
    wp_enqueue_script( 'my_alerts' );
}
add_action('admin_enqueue_scripts', 'load_my_alerts');

Dadurch wird Ihre Datei alerts.js nur im Admin-Bereich Ihrer Site in die Warteschlange gestellt und geladen. Anschließend wird Ihre jQuery angewendet, indem eine divmit einem ID-Selektor Ihrer Wahl gefolgt von Ihrem gewünschten Text angehängt wird .

Dieser Teil ('<div/>', {erstellt eine divfür Sie geschlossene, dh<div id="your-note">your note here...</div>

AKTUALISIEREN

Sie können dies tatsächlich als Vorlage für mehrere Elemente versuchen.

jQuery(document).ready(function($){

$('<div/>', {
    id: 'xxx',
    text: 'yyy'
}).appendTo('#tagsdiv-post_tag .inner');

$('<div/>', {
    id: 'aaa',
    text: 'bbb'
}).appendTo('#some_other_element .example');

// etc...

});
Adam
quelle
Danke, aber es scheint nicht zu funktionieren. Ich habe genau das getan, was Sie erwähnt haben, aber die Nachricht wurde nicht angezeigt. Muss ich für jede Meta-Box den vollständigen jQuery-Teil des Codes ausführen? oder gibt es einen direkteren und effizienteren Weg?
Travis Pflanz
Das ist schon ziemlich direkt und effizient - denn Sie möchten im Wesentlichen DOM-Manipulationen durchführen. Die Alternative besteht darin, entweder die PHP DOMDocument-Manipulation oder etwas wie PHP Simple DOM Parser zu verwenden. Letzteres bedeutet jedoch, dass Sie eine Bibliothek hinzufügen müssen, ganz zu schweigen davon, dass Sie den Code schreiben müssen, um das DOM zu manipulieren. Wenn also niemand einen einfacheren Weg kennt, eine Nachricht in die Tags-Metabox einzubinden, der einfacher ist als die Verwendung von jQuery, ist dies wahrscheinlich die beste Wahl. (IMO)
Adam
@TravisPflanz Zeigen Sie die Quelle in Ihrem Administrationsbereich an und stellen Sie sicher, dass Ihre Datei alerts.js geladen ist. Wenn es nicht existiert, liegt ein Fehler bei Ihrer Eingabe vor. Wenn es vorhanden ist, versuchen Sie, es mit dem obigen Code-Snippet zu aktualisieren. jQuery(document).ready(function($){ //do your stuff here });
Adam
Danke, der UPDATE-Teil der Antwort hat funktioniert. Da ich auch einen Link zu einer Hilfeseite eingefügt habe, wurde "Text" in "HTML" geändert.
Travis Pflanz
3

Die Verwendung des Miniaturbildfilters "admin_post_thumbnail_html" ist der beste Weg, um der Metabox "Ausgewähltes Bild" Text hinzuzufügen, und vermeidet die Verwendung von JavaScript / jQuery:

Zeigen Sie die Entwicklerreferenz "admin_post_thumbnail_html" auf wordpress.org an

Sie würden es verwenden, indem Sie functions.php so etwas hinzufügen:

add_filter('admin_post_thumbnail_html', 'add_featured_image_text');
function add_featured_image_text($content) {
    return $content .= '<p>The Featured Image should be at least 1024px wide</p>';
}
Rick Curran
quelle
1

Zuerst möchte ich @userabuser wiederholen. Sie sollten niemals die Kerndateien von WordPress bearbeiten . In der Tat sollten Sie das Bearbeiten von Plug-Ins und Designs vermeiden (verwenden Sie stattdessen ein untergeordnetes Design), da Änderungen bei einem Update verloren gehen, und Sie sollten aktualisieren!

Ich würde der in diesen Fragen beschriebenen Methode folgen:

und die vorhandene verwendete Metabox abmelden (ich denke, wie @userabuser verwendet, ist die ID #tagsdiv-post_tag). Registrieren Sie es dann erneut, damit Sie eine Funktion erstellen können, die ihre Innenseiten definiert, wie in den obigen Beiträgen erläutert.

Für Ihre Zwecke finden Sie jedoch die Funktion, die Sie nachahmen möchten post_tags_meta_box(): http://core.trac.wordpress.org/browser/tags/3.3/wp-admin/includes/meta-boxes.php#L265

Verwenden Sie einfach den Inhalt dieser Funktion in Ihrem eigenen Rückruf und bearbeiten Sie ihn, um Ihre Nachrichten anzuzeigen.

Stephen Harris
quelle