Rumah > Artikel > pembangunan bahagian belakang > Buat gelung diperibadikan untuk Siaran Komen Saya
Kadangkala, pembangun WordPress mungkin memerlukan gelung tersuai yang tidak boleh dijana menggunakan gelung standard (seperti kategori, pengarang, indeks, tarikh, arkib, taksonomi, dll.). Salah satunya ialah "Siaran yang saya ulas” >". Dalam tapak Soal Jawab ia bermaksud "soalan yang saya jawab", jadi ramai pembangun mungkin memerlukannya. Berdasarkan tutorial ini, kita boleh membuat satu lagi gelung tersuai. Mari buat bahagian ini.
Pergi ke folder tema anda dan buat myanswers.php
fail, kemudian salin dan tampal kod berikut ke dalamnya:
<?php /* Template Name: myanswers */ ?> <?php get_header(); ?> <?php get_template_part( 'loop', 'myanswers' ); ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
Kami baru sahaja mencipta fail templat yang dipanggil myanswers. Ia akan digunakan untuk memaparkan gelung tersuai kami.
Kekal dalam folder tema anda dan buat fail kedua yang dipanggil loop-myanswers.php. Dan tampal kod berikut ke dalam fail:
<?php if($wp_query->query_vars['paged']==0){$wp_query->query_vars['paged']=1;} $querystr = " SELECT $wpdb->posts.* FROM $wpdb->posts inner join $wpdb->comments on $wpdb->posts.ID=$wpdb->comments.comment_post_ID WHERE $wpdb->posts.post_status='publish' and $wpdb->comments.user_id=".wp_get_current_user()->ID." GROUP BY $wpdb->posts.ID ORDER BY $wpdb->posts.post_date DESC "; $lim_per_page=" limit ".($wp_query->query_vars["posts_per_page"]*($wp_query->query_vars['paged']-1)).",".$wp_query->query_vars["posts_per_page"]; $query_for_count = $wpdb->get_results($querystr, OBJECT); $wp_query->max_num_pages=ceil($wpdb->num_rows/$wp_query->query_vars["posts_per_page"]); $querystr=$querystr.$lim_per_page; $pageposts = $wpdb->get_results($querystr, OBJECT); ?> <?php if ($pageposts): ?> <?php global $post; ?> <?php foreach ($pageposts as $post): ?> <?php setup_postdata($post); ?> <?php /// THIS PART IS LOOP FROM TWENTYTEN, YOU CAN CHANGE IT HOWEVER YOU WANT BEGIN ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2> <div class="entry-meta"> <?php twentyten_posted_on(); ?> </div><!-- .entry-meta --> <?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search. ?> <div class="entry-summary"> <?php the_excerpt(); ?> </div><!-- .entry-summary --> <?php else : ?> <div class="entry-content"> <?php the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'twentyten' ) ); ?> <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?> </div><!-- .entry-content --> <?php endif; ?> <div class="entry-utility"> <?php if ( count( get_the_category() ) ) : ?> <span class="cat-links"> <?php printf( __( '<span class="%1$s">Posted in</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-cat-links', get_the_category_list( ', ' ) ); ?> </span> <span class="meta-sep">|</span> <?php endif; ?> <?php $tags_list = get_the_tag_list( '', ', ' ); if ( $tags_list ): ?> <span class="tag-links"> <?php printf( __( '<span class="%1$s">Tagged</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list ); ?> </span> <span class="meta-sep">|</span> <?php endif; ?> <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></span> <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?> </div><!-- .entry-utility --> </div><!-- #post-## --> <?php endforeach; /// THIS PART IS LOOP FROM TWENTYTEN, YOU CAN CHANGE IT HOWEVER YOU WANT END ?> <?php else : ?> <h2 class="center">Not Found</h2> <p class="center">Sorry, but you are looking for something that isn't here.</p> <?php include (TEMPLATEPATH . "/search.php"); ?> <?php endif; ?> <?php echo $wp_query->max_num_pages; if ( $wp_query->max_num_pages > 1 ) : ?> <div id="nav-below" class="navigation"> <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Previous', 'twentyten' ) ); ?></div> <div class="nav-next"><?php previous_posts_link( __( 'Next<span class="meta-nav">→</span>', 'twentyten' ) ); ?></div> </div><!-- #nav-below --> <?php endif; ?>
Fail ini digunakan untuk menjana gelung tersuai kami dalam fail templat.
Buka fail fungsi tema tema anda (functions.php) dan tambahkan fungsi dan penapis ini pada fail:
add_filter('query_vars', 'parameter_queryvars' ); function parameter_queryvars( $qvars ) { /* Plugin Name: Parameter Plugin URI: https://webopius.com/ Description: A plugin to allow parameters to be passed in the URL and recognized by WordPress Author: Adam Boyse Version: 1.0 Author URI: http://www.webopius.com/ */ $qvars[] = 'paged'; return $qvars; }
Pasangan fungsi dan penapis ini digunakan untuk mendapatkan ID halaman yang diperlukan untuk membina penomboran dalam tapak berstruktur pautan kekal.
Akhir sekali, pergi ke papan pemuka anda, buat halaman baharu daripada Halaman -> Tambah halaman baharu dan namakannya "jawapan saya", secara lalainya slugnya ialah myanswers. Pilih templat untuk halaman ini sebelum diterbitkan. Dalam widget templat, anda akan melihat kotak kombo yang mengandungi pilihan myanswers. Pilihnya.
Selepas memilih pilihan myanswers, klik butang Terbitkan.
Anda kini boleh menggunakan url tapak anda.com/myanswers sebagai halaman yang memaparkan gelung "Siaran yang anda ulas". Sudah tentu, bukan sahaja anda, setiap pengguna log masuk boleh melihat mereka.
Atas ialah kandungan terperinci Buat gelung diperibadikan untuk Siaran Komen Saya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!