====== Q and A and Knowledge Base for WordPress ====== related plugin: [[http://wordpress.org/plugins/q-and-a/|Q and A and Knowledge Base for WordPress]]\\ related problem: Xtreme-one Forum:[[http://marketpress.de/support/topic/template-custom-post-type/|Template Custom Post Type]] ===== Erstellen eines eigenen templates für die Ausgabe ===== Das plugin verwendet für die Stadardausgabe als Template die page.php oder single.php oder index.php des Themes. ChildThemes werden nicht berücksichtigt. Man hat aber die Möglichkeit, ein eigenes template zu erstellen. Das muß dann im Ordner des verwendeten Themes erstellt werden (''single-qa_faqs.php''). Im Fall von xtreme-one wäre das im xtreme-one Ordner des frameworks. Hier zeige ich nun verschiedene Möglichkeiten auf, um ein eigenes Template für xtreme-one und oder das ChildTheme zu erstellen. Als Basis dient uns dazu die single.php. Im folgenden wird das Vorgehen für htm5 gezeigt. Wenn man die Standard html Ausgabe verwendet, einfach die entsprechenden 2 html template parts von xtreme-one verwenden und umbenennen. ==== Möglichkeit 1: Template im Theme ==== 1.1. Anlegen einer Datei im Ordner xtreme-one/single-qa_faqs.php auf Basis der single.php (html5 und html) single-qa_faqs.php <code phpwp> <?php /* * Xtreme Name: Single QA Faqs */ get_header(); $docmode = ''; if ( xtreme_is_html5() ) { $docmode = 'html5'; } get_template_part( $docmode . 'loop', 'single-qafaqs' ); get_footer(); </code> 1.2. Erstellen der html5loop-single-qafaqs.php auf Basis der html5loop-single.php <code phpwp> <?php if ( have_posts() ) : do_action('xtreme_before_loop'); while ( have_posts() ) : the_post(); do_action('xtreme_before_single_post'); get_template_part('includes/posttemplates/html5-content', 'single-qafaqs'); do_action('xtreme_after_single_post'); comments_template( '', true ); do_action('xtreme_after_comments_template'); endwhile; do_action('xtreme_after_loop'); endif; </code> Bei Verwendung der Standardausgabe(html) entsprechend die Datei loop-single.php verwenden und in loop-single-qafaqs.php umbenennen und die html5- parts entfernen.\\ ''get_template_part('includes/posttemplates/content', 'single-qafaqs');'' 1.3. Anlegen einer xtreme-one/includes/posttemplates/html5-content-single-qafaqs.php auf Basis der html5-content-single.php <code phpwp> <article class="<?php xtreme_post_class() ?>" id="post-<?php the_ID() ?>"> <header> <?php if ( current_theme_supports('xtreme-subtitles') ) : ?> <hgroup> <?php endif; ?> <?php xtreme_post_headline( 'h1', true ) ?> <?php if ( current_theme_supports('xtreme-subtitles') ) : ?> <?php xtreme_post_subtitle('h3') ?> </hgroup> <?php endif; ?> <?php xtreme_html5_byline(); ?> </header> <div class="entry-content"> <?php the_content() ?> <?php wp_link_pages( array( 'before' => '<nav><strong>' . __( 'Pages:', XF_TEXTDOMAIN ) . '</strong> ', 'after' => '</nav>', 'next_or_number' => 'number' ) ) ?> <?php edit_post_link( __( 'Edit', XF_TEXTDOMAIN ), '<div class="postedit">', '</div>' ) ?> </div> <?php do_action( 'xtreme_single_footer' ) ?> </article> </code> Bei Verwendung der Standardausgabe(html) entsprechend die Datei content-single.php verwenden und in content-single-qafaqs.php umbenennen. Hier gilt es noch zu erwähnen, das die Ausgabe der ''<hgroup>'' für html5 vermutlich nicht in die Spezifikationen mit aufgenommen wird, man könnte diese also auch schon weglassen, also dann in etwa so: <code phpwp> <article class="<?php xtreme_post_class() ?>" id="post-<?php the_ID() ?>"> <header> <?php xtreme_post_headline( 'h1', true ) ?> <?php xtreme_post_subtitle('h3') ?> <?php xtreme_html5_byline(); ?> </header> <div class="entry-content"> <?php the_content() ?> <?php wp_link_pages( array( 'before' => '<nav><strong>' . __( 'Pages:', XF_TEXTDOMAIN ) . '</strong> ', 'after' => '</nav>', 'next_or_number' => 'number' ) ) ?> <?php edit_post_link( __( 'Edit', XF_TEXTDOMAIN ), '<div class="postedit">', '</div>' ) ?> </div> <?php do_action( 'xtreme_single_footer' ) ?> </article> </code> ==== Möglichkeit 2: Template im ChildTheme ==== Um das Ganze sicher vor xtreme-one updates zu halten, kannst du die drei oben beschriebenen Dateien auch in die entsprechenden Ordner im ChildTheme ablegen und zusätzlich folgende hooks und Funktion in deiner functions.php des ChildThemes hinterlegen: <code phpwp> remove_action("template_redirect", 'qaplus_template_redirect'); function my_qaplus_template_redirect() { global $wp; global $wp_query; global $post; if ( is_single() && 'qa_faqs' == get_post_type($post) ) { if ( file_exists( XF_CHILD_THEME_DIR . '/single-qa_faqs.php') ) { $page_template = XF_CHILD_THEME_DIR . '/single-qa_faqs.php'; } } if ( isset( $page_template ) ) { if ( have_posts() ) { include( $page_template ); exit; } else { $wp_query->is_404 = true; } } } add_action("template_redirect", 'my_qaplus_template_redirect'); </code> ==== Möglichkeit 3: Verwenden des Standard Templates single.php ==== Um einfach das Template der single.php zu verwenden, wird folgender hook in die functions.php des Themes , bzw. ChildThemes kopiert. Damit greift dann wieder die Template Hirachie von WordPress und es wird die entsprechende single.php verwendet. <code phpwp> remove_action( 'template_redirect', 'qaplus_template_redirect' ); </code>