it-swarm.com.de

Erfordern die Überprüfung einer benutzerdefinierten Taxonomie

Ich habe eine benutzerdefinierte Taxonomie "Position" mit mehreren Begriffen für einen benutzerdefinierten Beitragstyp "Mitarbeiter" im Administrator. Ich möchte das Formular validieren, damit beim Speichern/Aktualisieren eines Beitrags eine Position ausgewählt werden muss.

Wie überprüfe ich die Taxonomie der Position und mache sie zu einem erforderlichen Feld im WordPress-Administrator?

Außerdem möchte ich eine Fehlermeldung anzeigen, um den Benutzern anzuzeigen, dass eine Position überprüft werden muss.

Vielen Dank!

1
jaysonp

nach diesem Tutorial habe ich die Standard-Taxonomie-Metabox durch eine benutzerdefinierte Metabox mit Optionsfeldern ersetzt. (Das Tutorial verwendet ein select, aber es ist nicht so anders). Auf diese Weise können Sie sicherstellen, dass etwas ausgewählt ist, UND die Auswahl auf einige vordefinierte Optionen beschränken.

http://shibashake.com/wordpress-theme/wordpress-custom-taxonomy-input-panels

es gibt einen Hinweis zum Entfernen der Standard-Metabox. Sie können jedoch verhindern, dass die Benutzeroberfläche jemals angezeigt wird, indem Sie show-ui bei der Definition Ihrer Taxonomie auf false setzen.

2
helgatheviking

Ich würde sagen, haken Sie sich in pre_post_update ein und überprüfen Sie, was über $_POST ...

2
kaiser

Ich habe eine Antwort auf eine sehr ähnliche Frage hier gepostet, die einen "Rahmen" zur Validierung von Post-Feldern (Titel, Inhalt ...), Meta-Feldern (beliebige Metabox) und Taxonomien bietet (Kategorie, Tags, Benutzerdefiniert) von Ajax, bevor der Beitrag eingereicht wird.

2
Bainternet

Angenommen, Sie verwenden eine hierarchische Taxonomie, die für mich funktioniert hat, ändern Sie 'tx' in die von Ihnen als Taxonomie bezeichnete. Hinweis: Wenn WP in Zukunft die HTML-Struktur ändert oder Namenskonventionen verwendet werden, funktioniert dies möglicherweise nicht.

add_action('admin_footer', function() {
?>
<script type="text/javascript">
    jQuery(document).ready(function ($) {
        //taxonomy
        var tx = 'post-type';

        var $scope = $('#' + tx + '-all > ul');
        $('#publish').click(function(){
            if ($scope.find('input:checked').length > 0) {
                alert('found');
                return true;
            } else {
                alert('not found');
                return false;
            }
        });
    });
</script>
<?php
});
0
manish