it-swarm.com.de

Wie liste ich benutzerdefinierte Beitragstypen auf?

Folgendes möchte ich tun:

a) Erstellen Sie einen benutzerdefinierten Beitragstyp und schreiben Sie ein Feld für einen Menüeintrag mit dem Namen "My Stuff".

b) "My Stuff" verhält sich wie eine Kategorie - der Inhalt wird jedoch nicht im Hauptblog angezeigt. Es wird nur unter "Meine Sachen" angezeigt.

Also, was muss ich tun? Eine weitere Schleife erstellen? Wenn ja, wo würde ich die zweite Schleife platzieren und wie würde ich einen Link zu "My Stuff" erstellen?

Oder sollte ich "My Stuff" zur Schleife in index.php hinzufügen, eine Kategorie "My Stuff" (oder Taxonomie) erstellen und "My Stuff" irgendwie filtern, damit es nur angezeigt wird, wenn bestimmte Felder vorhanden sind?

Entschuldigung für die komplizierte Frage, aber ich finde das alles sehr verwirrend. In keinem der verteilten Tutorials zu diesem Thema wird deutlich erklärt, wie Sie benutzerdefinierten Inhalt in einem Beitrag anzeigen, der sich nicht auf einer Seite oder in einer Schleife befindet.

Ich würde mich über jede Unterstützung freuen.

Vielen Dank.

2
user5486

a) Erstellen Sie einen benutzerdefinierten Beitragstyp und schreiben Sie ein Feld für einen Menüeintrag mit dem Namen "My Stuff".

Einfach. Der Codex sollte Ihnen alles sagen, was Sie wissen müssen.

Aber hier ist ein anderes Beispiel:

add_action( 'init', 'wpse_17863' );

/**
 * Creates a visible post type.
 *
 * Don’t forget to visit wp-admin/options-permalink.php once to refresh 
 * the rewrite rules!
 *
 * @return void
 */
function wpse_17863()
{
    $labels = array (
        // Usually plural.
        'name'               => 'Stuffies'
    ,   'singular_name'      => 'Stuffy'
    ,   'add_new'            => 'New Stuff'
    ,   'add_new_item'       => 'Add New Stuff'
    ,   'edit_item'          => 'Edit Stuffy'
    ,   'new_item'           => 'New Stuffy'
    ,   'view_item'          => 'View Stuffy'
    ,   'search_items'       => 'Search Stuffies'
    ,   'not_found'          => 'No Stuffies found'
    ,   'not_found_in_trash' => 'No Stuffies found in Trash'
    ,   'parent_item_colon'  => 'Parent Stuffy:'
    );

    register_post_type(
        'stuffy'
    ,   array (
            // visible
            'public'        => TRUE
            // Menu main name, usually plural
        ,   'label'         => 'Stuffies'
            // All labels
        ,   'labels'        => $labels
            // Menu position
            //   5 - below Posts
            //  10 - below Media
            //  15 - below Links
            //  20 - below Pages
            //  25 - below comments
            //  60 - below first separator
            //  65 - below Plugins
            //  70 - below Users
            //  75 - below Tools
            //  80 - below Settings
            // 100 - below second separator
        ,   'menu_position' => 5
            // permalinks
        ,   'rewrite' => array ( 'slug' => 'stuff' )
            // Create a default archive at /stuff/
        ,   'has_archive'   => TRUE
            // Allow child pages.
        ,   'hierarchical'  => TRUE
        // Add it to custom menus
        ,   'show_in_nav_menus'   => TRUE
        // Components of the editor.
        ,   'supports' => array (
                'editor'
            ,   'excerpt' 
            ,   'page-attributes'
            ,   'thumbnail'
            ,   'title'
             )
        // We use the built-in taxonomies too.
        ,   'taxonomies'          => array ( 'category', 'post_tag' )
        )
    );
}

b) "My Stuff" verhält sich wie eine Kategorie - der Inhalt wird jedoch nicht im Hauptblog angezeigt. Es wird nur unter "Meine Sachen" angezeigt.

Ich verstehe diesen Teil nicht. Ein benutzerdefinierter Beitragstyp kann eine Taxonomie verwenden - ich habe Kategorien und Tags in meinem Beispiel für eine Demonstration hinzugefügt - dies ist jedoch keine. Sie können Eltern-Kind-Beziehungen wie bei Seiten verwenden.
Wenn Sie diesen Punkt in Ihrer Frage klarstellen, kann ich meine Antwort möglicherweise aktualisieren.

In keinem der verteilten Tutorials zu diesem Thema wird deutlich erklärt, wie Sie benutzerdefinierten Inhalt in einem Beitrag anzeigen, der sich nicht auf einer Seite oder in einer Schleife befindet.

Der Parameter 'has_archive' ist ziemlich neu . Ältere Tutorials erwähnen dies möglicherweise nicht.
Um in Themes oder Plugins auf Ihre neuen Archive zu verlinken, verwenden Sie get_post_type_archive_link( 'stuffy' ) .

1
fuxia

Ich musste nur etwas Ähnliches tun. Meine Lösung bestand darin, eine Vorlagen-PHP-Datei zu erstellen und dann eine Seite zu erstellen, die die Vorlage verwendet. In der Vorlage befand sich eine WP_Query, um die Schleife zu erstellen.

Am Anfang der Vorlagendatei:

<?php /* Template Name: <template name> */ ?>

und in der Vorlagendatei:

$args=array('post_type' => 'my_stuff', 'posts_per_page' => 10);
$loop = new WP_Query( $args );
while ($loop->have_posts()) : $loop->the_post();

Dann habe ich eine Seite erstellt und in den Attributen den Vorlagennamen aus der Liste ausgewählt.

0
Chris