it-swarm.com.de

Aktivieren Sie Haftnotizen für benutzerdefinierten post_type

ich habe diese benutzerdefinierte post_type: tvr_apartment

function custom_post_apartment() {
        $labels = array(
            'name'                => 'Apartments',
            'singular_name'       => 'Apartment',
            'add_new'             => 'Add New',
            'add_new_item'        => 'Add New Apartment',
            'edit_item'           => 'Edit Apartment',
            'new_item'            => 'New Apartment',
            'all_items'           => 'All Apartments',
            'view_item'           => 'View Apartment',
            'search_items'        => 'Search Apartments',
            'not_found'           => 'No apartments found',
            'not_found_in_trash'  => 'No apartments found in trash',
            'parent_item_colon'   => '',
            'menu_name'           => 'Apartments'
        );

        $args = array(
            'labels' => $labels,
            'public' => true,
            'query_var' => true,
            'rewrite' => true,
            'capability_type' => 'post',
            'has_archive' => true,
            'hierarchical' => false,
            'menu_position' => null,
            'taxonomies' => array('rf_apartment_feature'),
            'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt' )
        );

        register_post_type( 'tvr_apartment', $args );
    }

Und ich möchte die Sticky-Post-Funktionalität dazu aktivieren,

enter image description here

Ich habe hier gesucht: http://codex.wordpress.org/Function_Reference/post_type_supports

Aber ich scheine es ist nicht der richtige Weg, irgendwelche Ideen?

4

Laut umfangreichem und lang laufendem Trac-Ticket # 12702 unterstützen benutzerdefinierte Post-Typen keine Sticky-Funktionalität (und werden diese wahrscheinlich auch nicht unterstützen).

Es ist wahrscheinlich nicht unmöglich, es (mit einer unheiligen Menge an Copy Paste und Edge Cases) für CPT in benutzerdefinierten Websites wiederzuverwenden, aber meiner Meinung nach wäre eine benutzerdefinierte Lösung (wahrscheinlich auf benutzerdefinierten Feldern basierend) praktischer und sauberer.

5
Rarst

Ich habe es geschafft, das Folgende zum Laufen zu bringen. Lassen Sie mich die Technik beschreiben, damit Sie entscheiden können, ob Sie sie verwenden möchten oder nicht.

  1. der Code verwendet zwei Haken, von denen einer unmittelbar vor dem Platzieren der "seitlichen" Meta-Boxen und einer unmittelbar nach dem Abschnitt "Datum/Uhrzeit" in der Meta-Box "Publizieren" ausgelöst wird.

  2. der erste Haken (vor) zeichnet den ursprünglichen Beitragstyp auf und schaltet ihn dann auf "Beitrag" um. WordPress glaubt, dass es sich um einen Beitrag handelt, und legt die für den Beitragstyp "Beitrag" spezifischen Standardfelder fest.

  3. der zweite Haken (nach) setzt den Post-Typ auf das Original zurück.

Wenn jemand auf Probleme stößt oder auf unvorhergesehene Anwendungsfälle stößt, bei denen diese Technik möglicherweise fehlschlägt, antworten Sie bitte.

// see /wp-admin/edit-form-advanced.php .. since wp 2.5.0
add_action( 'submitpost_box', function() {
    // fyi .. unable to use "post_submitbox_minor_actions" action (/wp-admin/includes/meta-boxes.php) because $post_type is set early
    global $post;
    if ( isset( $post->post_type ) && in_array( $post->post_type, array( 'post_type_1', 'post_type_2' ) ) ) {
        echo 'before'; // debug
        $post->post_type_original = $post->post_type;
        $post->post_type = 'post';
    }
} );

// see /wp-admin/includes/meta-boxes.php .. since wp 2.9.0
add_action( 'post_submitbox_misc_actions', function() {
    global $post;
    if ( isset( $post->post_type_original ) && in_array( $post->post_type_original, array( 'post_type_1', 'post_type_2' ) ) ) {
        echo 'after'; // debug
        $post->post_type = $post->post_type_original;
        unset( $post->post_type_original );
    }
} );

Hinweis: Mit der obigen Option wird die Benutzeroberfläche erweitert. Sie müssten in Ihren Vorlagen/Ausgaben weiterhin nach klebrigen Beiträgen suchen und diese bearbeiten. Etwas wie das Folgende (nur ohne das Plugin) ):

https://wordpress.stackexchange.com/a/185915/466

2
farinspace