it-swarm.com.de

Erstellen Sie eine einzelne Seite für einen benutzerdefinierten Beitragstyp

Ok, ich habe das Custom Post Type UI Plugin installiert und ein Plugin erstellt. Ich habe dann einen neuen Beitrag hinzugefügt. In meinem Theme habe ich einen Code wie diesen:

<?php 
    $loop = new WP_Query( array( 
        'post_type' => 'case studies',   /* edit this line */
        'posts_per_page' => 15 ) );
?>

<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>  

    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
        <?php the_post_thumbnail('thumbnail'); ?>
    </a>

<?php endwhile; ?> 

Wenn ich nun erstens auf das Miniaturbild klicke, wird im Browser eine Fehlermeldung angezeigt, dass es sich in einer Umleitungsschleife befindet. Zweitens möchte ich genau wissen, welche Dateien ich erstellen muss, um einen einzelnen Beitrag dieses benutzerdefinierten Beitragstyps anzuzeigen. Und was in diese Akte zu setzen.

6
benhowdle89

Verwenden Sie single-{posttype}.php für die einzelne Vorlage. Wenn Sie Ihren Beitragstyp mit dem Argument has_archive auf true registrieren, können Sie archive-{posttype}.php für Ihre Archivvorlage verwenden, sodass Sie die dort vorhandene Abfrage überspringen können, da das globale Objekt $wp_query bereits mit Ihrem Objekt gefüllt ist benutzerdefinierte Beitragstyp.

Übrigens, Sie haben ein Leerzeichen in Ihrem post_type Argument, was ein Problem sein wird.

Schauen Sie sich die Vorlagenhierarchie an und erwägen Sie die Registrierung Ihrer CPTs mithilfe von Code in einem Plugin, anstatt ein CPT-UI-Plugin zu verwenden.

15
Dave Romsey

Es ist nicht erforderlich, dass WordPress die Standardseitenvorlage verwendet. Sie können jedoch eine benutzerdefinierte single-cpt.php -Datei erstellen, wobei cpt der Name Ihres registrierten Beitragstyps ist.

<?php

get_header(); ?>

<div id="main-content" class="main-content">

    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">
            <?php
                // Start the Loop.
                while ( have_posts() ) : the_post();

                    // Include the page content template.
                    get_template_part( 'content', 'page' );

                endwhile;
            ?>
        </div><!-- #content -->
    </div><!-- #primary -->
</div><!-- #main-content -->

<?php
get_sidebar();
get_footer();
2
Brad Dalton

Sie können dies einfach in Ihre single.php-Datei (innerhalb der Schleife) schreiben und alle Felder ausgeben, die Sie in der if-Anweisung benötigen.

if($post_type == 'case_studies') { // you may need this to be without spaces (machine name)

                echo '<h1>'.get_the_title().' flavors</h1>';

               // post id
             $post_id = get_the_ID();
              get_post_meta($post_id, 'custom_field_name', true);


                <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a> 
                  <?php endwhile; ?>

 }

Eine weitere Option ist das Erstellen einer Seitenvorlage. Kopieren Sie Ihre single.php-Datei und benennen Sie sie in case_studies.php um.

<?php
/*
Template Name: Brand Output 04/12
*/
?>

und dann die gleiche if-Anweisung in der single.php-Schleife wie im obigen Beispiel hinzufügen ...

0
Starfs

Benutzerdefinierter Beitrag Geben Sie wordpress.Basic in vier Schritten ein.Schritt 1: Speicherort des Dateipfads: theme/function.php in Ihrem Thema.Paste-Code in function.php (registrieren Sie den benutzerdefinierten Beitragstyp)

<?php

add_action( 'init', 'custom_post_type_func' );
function custom_post_type_func() {
    //posttypename = services
$labels = array(
'name' => _x( 'Services', 'services' ),
'singular_name' => _x( 'services', 'services' ),
'add_new' => _x( 'Add New', 'services' ),
'add_new_item' => _x( 'Add New services', 'services' ),
'edit_item' => _x( 'Edit services', 'services' ),
'new_item' => _x( 'New services', 'services' ),
'view_item' => _x( 'View services', 'services' ),
'search_items' => _x( 'Search services', 'services' ),
'not_found' => _x( 'No services found', 'services' ),
'not_found_in_trash' => _x( 'No services found in Trash', 'services' ),
'parent_item_colon' => _x( 'Parent services:', 'services' ),
'menu_name' => _x( 'Services', 'services' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'description' => 'Hi, this is my custom post type.',
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes' ),
'taxonomies' => array( 'category', 'post_tag', 'page-category' ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post'
);
register_post_type( 'services', $args );
}
?>

Schritt 2: Wie kann der benutzerdefinierte WordPress-Beitragstyp auf der WordPress-Vorlagenseite angezeigt werden?

Sie können überall auf der Vorlagenseite Folgendes anzeigen:

<?php   $args = array( 'post_type' => 'services', 'posts_per_page' => 20 );
            $loop = new WP_Query( $args );
            while ( $loop->have_posts() ) : $loop->the_post(); ?>
            <div class="services-items">
            <?php the_title(); 
        if ( has_post_thumbnail( $post->ID ) ) {
        echo '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( $post->post_title ) . '">';
        echo get_the_post_thumbnail( $post->ID, 'thumbnail' );
        echo '</a>'; }

?>
            </div>
    <?php endwhile; ?>

Schritt 3: Erstellen Sie eine neue Vorlage für diesen einzelnen Beitrag

single- {Name des benutzerdefinierten Beitragstyps} .php oder single-services.php

Schritt 4: Fügen Sie Code in die Datei single-services.php ein

 <?php /* The loop */ ?>
            <?php while ( have_posts() ) : the_post(); ?>
                <div class="main-post-div">
                <div class="single-page-post-heading">
                <h1><?php the_title(); ?></h1>
                </div>
                <div class="content-here">
                <?php  the_content();  ?>
                </div>
                <div class="comment-section-here"
                <?php //comments_template(); ?>
                </div>
                </div>

            <?php endwhile; ?>

Dies ist ein Beispiel für einen benutzerdefinierten Beitragstyp mit einer einzelnen Beitragsseite.

0
hitesh nagpal