Frage

In Wordpress erhalten Sie die Standardpost Status: Veröffentlicht, Entwurf und Überprüfung steht. Ist es möglich, einige weitere Post-Typen über die Registrierung sie über die function.php Datei des aktiven Thema hinzufügen?

Auch ist es möglich, die Lables der veröffentlichen Meta Box zu bearbeiten? Was ich einreichen Publishing wirklich ist nicht ...

wie auch hinzufügt Ich möchte nur diese Änderungen vorgenommen, wenn in meinem benutzerdefinierten Post-Typ ich gemacht habe.

Mit freundlichen Grüßen

Scott

War es hilfreich?

Lösung

Da WP 3.0 können Sie die register_post_status () Funktion ( http: // hitchhackerguide. com / 2011/02/12 / register_post_status / ) neuen Status zu einem Post-Typ hinzuzufügen.

WP selbst verwendet register_post_status () den Standard "veröffentlicht" zu registrieren, "Entwurf" usw. Status auf init die create_initial_post_types () -Funktion in wp-includes / post.php ( http://hitchhackerguide.com/2011/02/11/create_initial_post_types/ ).

Lesen Sie den Code in diesen Links, und Sie können eine Vorstellung davon, wie Sie die Funktion nutzen zu können.

Ich hoffe, dass hilft Ihnen den Einstieg!

Andere Tipps

Sie können ein Plugin schreiben, wenn Sie wissen, wie. Sie haben in die Dokumentation oder ähnliche Plugins wie dieser http://wordpress.org/extend zu graben / plugins / edit-flow / oder dieses http: // wordpress.org/extend/plugins/custom-post-type-ui/

Mit "Hooks, Aktionen und Filter" können Sie die Admin-Oberfläche ändern können, finden Sie hier: http: //codex.wordpress .org / Plugin_API

Bisher habe ich schreibe nur ein einfaches Plugin und ich weiß nicht, die genauen Schritte, die Sie folgen müssen, um diese ...

zu erreichen

Viel Glück!

Sie können benutzerdefinierte Post-Status' mit der register_post_status Funktion hinzuzufügen. Siehe create_initial_post_types () in http: // Kern .trac.wordpress.org / Browser / tags / 3.2.1 / wp-includes / post.php

Seien Sie jedoch gewarnt, dass dies nicht in die Wordpress-Backend Benutzeroberfläche integriert ist.

/**
 * PostStatusExtender
 * 
 * @author Hyyan Abo Fakher<hyyanaf@gmail.com>
 */
class PostStatusExtender
{

    /**
     * Extend 
     * 
     * Extend the current status list for the given post type 
     * 
     * @global \WP_POST $post
     * 
     * @param string $postType the post type name , ex: product
     * @param array $states array of states where key is the id(state id) and value
     *                      is the state array 
     */
    public static function extend($postType, $states)
    {

        foreach ($states as $id => $state) {
            register_post_status($id, $state);
        }

        add_action('admin_footer-post.php', function() use($postType, $states) {

            global $post;
            if (!$post || $post->post_type !== $postType) {
                return false;
            }

            foreach ($states as $id => $state) {

                printf(
                        '<script>'
                        . 'jQuery(document).ready(function($){'
                        . '   $("select#post_status").append("<option value=\"%s\" %s>%s</option>");'
                        . '   $("a.save-post-status").on("click",function(e){'
                        . '      e.preventDefault();'
                        . '      var value = $("select#post_status").val();'
                        . '      $("select#post_status").value = value;'
                        . '      $("select#post_status option").removeAttr("selected", true);'
                        . '      $("select#post_status option[value=\'"+value+"\']").attr("selected", true)'
                        . '    });'
                        . '});'
                        . '</script>'
                        , $id
                        , $post->post_status !== $id ? '' : 'selected=\"selected\"'
                        , $state['label']
                );

                if ($post->post_status === $id) {
                    printf(
                            '<script>'
                            . 'jQuery(document).ready(function($){'
                            . '   $(".misc-pub-section #post-status-display").text("%s");'
                            . '});'
                            . '</script>'
                            , $state['label']
                    );
                }
            }
        });


        add_action('admin_footer-edit.php', function() use($states, $postType) {

            global $post;

            if (!$post || $post->post_type !== $postType) {
                return false;
            }

            foreach ($states as $id => $state) {
                printf(
                        '<script>'
                        . 'jQuery(document).ready(function($){'
                        . " $('select[name=\"_status\"]' ).append( '<option value=\"%s\">%s</option>' );"
                        . '});'
                        . '</script>'
                        , $id
                        , $state['label']
                );
            }
        });

        add_filter('display_post_states', function($states, $post) use($states, $postType) {

            foreach ($states as $id => $state) {
                if ($post->post_type == $postType && $post->post_status === $id) {
                    return array($state['label']);
                } else {
                    if (array_key_exists($id, $states)) {
                        unset($states[$id]);
                    }
                }
            }

            return $states;
        }, 10, 2);
    }

}

Und hier , wie Sie mit es

add_action('init', function() {
    PostStatusExtender::extend(self::NAME, array(
        'sold' => array(
            'label' => __('Sold', 'viasit'),
            'public' => true,
            'exclude_from_search' => true,
            'show_in_admin_all_list' => true,
            'show_in_admin_status_list' => true,
            'label_count' => _n_noop('Sold <span class="count">(%s)</span>', 'Sold <span class="count">(%s)</span>'),
        )
    ));
});

Edit:. Festtippfehler im Code

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top