מדריך: איך יוצרים תבנית וורדפרס מאפס, חלק חמישי

כן כן, אני יודע. לאן נעלמתי? מה עשיתי עד עכשיו? והם יש קשר לעובדה שחזרתי קצת אחרי שאחמדיניג’אד סיים את תפקידו ואיך יכול להיות שמעולם לא ראו אותנו באותו מקום ובאותו הזמן. שאלות לגיטימיות לחלוטין, אבל כמו חייל במודיעין – אני מצטער, אני לא יכול לענות על זה. הנה המשך המדריך, בתקווה שלא ויתרתם על וורדפרס ועברתם לדרופל או ג’ומלה (חס וחלילה!). בחלק הזה, שכבר מעלה ריח של סיום המדריך, אסביר איך יוצרים את תבנית העמוד, הארכיון והקטגוריה, עמוד כותב ועמוד התגיות.

וורדפרס רואה בעמוד (page.php) כפוסט מחוץ לסדר הכרונולוגי של שאר הפוסטים. אנחנו פשוט קוראים לו “עמוד”. למעשה לעמוד בוורדפרס יש את אותם פרמטרים, יכולות ומבנה כמו של פוסט. אני לא ממש אוהב תגובות בעמודים, אז אני לא מכניס את כל החלק הזה, אבל אפשר ליצור שדה מיוחד בעמוד שנקרא תגובות (comments) ובקוד עצמו להכניס חוק שיקרא לתבנית התגובות. אבל למעשה, הקוד נשאר כמעט אותו הדבר:

[php]

<?php get_header(); ?>

<div id=”container”>

<div id=”content”>

<?php the_post(); ?>

<div id=”post-<?php the_ID(); ?>” <?php post_class(); ?>>

<h1 class=”entry-title”><?php the_title(); ?></h1>

<div class=”entry-content”>

<?php the_content(); ?>

<?php wp_link_pages(‘before=<div class=”page-link”>’ . __( ‘עמודים:’, ‘your-theme’ ) . ‘&after=</div>’) ?>

<?php edit_post_link( __( ‘עריכה’, ‘your-theme’ ), ‘<span class=”edit-link”>’, ‘</span>’ ) ?>

</div><!– .entry-content –>

</div><!– #post-<?php the_ID(); ?> –>

<?php if ( get_post_custom_values(‘comments’) ) comments_template() // הוספת תבנית התגובות כאשר מוסיפים שדה מיוחד בעמוד ?>

</div><!– #content –>

</div><!– #container –>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

[/php]

יצירת עמוד ארכיון

כדי ליצור את עמודי הקטגוריה, התגיות והכותב אנחנו צריכים תבנית בסיסית עליה נוכל להתלבש. כמו שעשינו עם עמוד האינדקס שלנו (index.php) נכתוב עכשיו את עמוד הארכיון שלנו שיהיה תבנית המקור לשאר העמודים שציינתי.

מה שעמוד הארכיון (archive.php) עושה (ושאר התבניות המשתרשרות אליו) הוא להציג פוסטים לפי קריטריונים מסויימים – טווח תאריכים למשל, פוסטים שנכתבו על ידי אדם מסויים, קטגוריה ספציפית או תג מסויים. בואו נשתמש בתבנית התבניות שבנינו בחלקים הראשונים ונבנה עליה:

[php]

<?php get_header(); ?>

<div id=”container”>
<div id=”content”>

<div id=”nav-above” class=”navigation”>
</div><!– #nav-above –>

<div id=”post-<?php the_ID(); ?>” <?php post_class(); ?>>
</div><!– #post-<?php the_ID(); ?> –>

<div id=”nav-below” class=”navigation”>
</div><!– #nav-below –>

</div><!– #content –>
</div><!– #container –>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
[/php]

וזה סדר הפעולות שקורות בתבנית הזו:
– קריאה לפוסט: the_post()
– בחירה של התבנית המתאימה
– חזרה לפוסטים: rewind_posts()
– הלולאות הרגילות של וורדפרס

וככה זה נראה, שימו לב שהתגים העליונים אומרים לנו באיזו תבנית אנו נמצאים:

[php]

<?php the_post(); ?>

<?php if ( is_day() ) : ?>

<h1 class=”page-title”><?php printf( __( ‘ארכיון יומי: <span>%s</span>’, ‘your-theme’ ), get_the_time(get_option(‘date_format’)) ) ?></h1>

<?php elseif ( is_month() ) : ?>

<h1 class=”page-title”><?php printf( __( ‘ארכיון חודשי: <span>%s</span>’, ‘your-theme’ ), get_the_time(‘F Y’) ) ?></h1>

<?php elseif ( is_year() ) : ?>

<h1 class=”page-title”><?php printf( __( ‘ארכיון שנתי: <span>%s</span>’, ‘your-theme’ ), get_the_time(‘Y’) ) ?></h1>

<?php elseif ( isset($_GET[‘paged’]) &amp;&amp; !empty($_GET[‘paged’]) ) : ?>

<h1 class=”page-title”><?php _e( ‘ארכיון הבלוג’, ‘your-theme’ ) ?></h1>

<?php endif; ?>

<?php rewind_posts(); ?>

<?php global $wp_query; $total_pages = $wp_query->max_num_pages; if ( $total_pages > 1 ) { ?>

<div id=”nav-above” class=”navigation”>

<div class=”nav-previous”><?php next_posts_link(__( ‘<span class=”meta-nav”>&amp;laquo;</span> Older posts’, ‘your-theme’ )) ?></div>

<div class=”nav-next”><?php previous_posts_link(__( ‘Newer posts <span class=”meta-nav”>&amp;raquo;</span>’, ‘your-theme’ )) ?></div>

</div><!– #nav-above –>

<?php } ?>

<?php while ( have_posts() ) : the_post(); ?>

<div id=”post-<?php the_ID(); ?>” <?php post_class(); ?>>

<h2 class=”entry-title”><a href=”<?php the_permalink(); ?>” title=”<?php printf( __(‘קישור ישיר ל%s’, ‘your-theme’), the_title_attribute(‘echo=0’) ); ?>” rel=”bookmark”><?php the_title(); ?></a></h2>

<div class=”entry-meta”>

<span class=”meta-prep meta-prep-author”><?php _e(‘מאת’, ‘your-theme’); ?></span>

<span class=”author vcard”><a class=”url fn n” href=”<?php echo get_author_link( false, $authordata->ID, $authordata->user_nicename ); ?>” title=”<?php printf( __( ‘צפיה בכל הפוסטים מאת %s’, ‘your-theme’ ), $authordata->display_name ); ?>”><?php the_author(); ?></a></span>

<span class=”meta-sep”> | </span>

<span class=”meta-prep meta-prep-entry-date”><?php _e(‘פורסם’, ‘your-theme’); ?></span>

<span class=”entry-date”><abbr class=”published” title=”<?php the_time(‘Y-m-dTH:i:sO’) ?>”><?php the_time( get_option( ‘date_format’ ) ); ?></abbr></span>

<?php edit_post_link( __( ‘עריכה’, ‘your-theme’ ), “<span class=”meta-sep”>|</span>ntttttt<span class=”edit-link”>”, “</span>nttttt” ) ?>

</div><!– .entry-meta –>

<div class=”entry-summary”>

<?php the_excerpt( __( ‘המשך קריאה <span class=”meta-nav”>&amp;raquo;</span>’, ‘your-theme’ ) ); ?>

</div><!– .entry-summary –>

<div class=”entry-utility”>

<span class=”cat-links”><span class=”entry-utility-prep entry-utility-prep-cat-links”><?php _e( ‘פורסם ב ‘, ‘your-theme’ ); ?></span><?php echo get_the_category_list(‘, ‘); ?></span>

<span class=”meta-sep”> | </span>

<?php the_tags( ‘<span class=”tag-links”><span class=”entry-utility-prep entry-utility-prep-tag-links”>’ . __(‘תוייג’, ‘your-theme’ ) . ‘</span>’, “, “, “</span>ntttttt<span class=”meta-sep”>|</span>n” ) ?>

<span class=”comments-link”><?php comments_popup_link( __( ‘השארת תגובה’, ‘your-theme’ ), __( ‘תגובה אחת’, ‘your-theme’ ), __( ‘% תגובות’, ‘your-theme’ ) ) ?></span>

<?php edit_post_link( __( ‘עריכה’, ‘your-theme’ ), “<span class=”meta-sep”>|</span>ntttttt<span class=”edit-link”>”, “</span>ntttttn” ) ?>

</div><!– #entry-utility –>

</div><!– #post-<?php the_ID(); ?> –>

<?php endwhile; ?>

<?php global $wp_query; $total_pages = $wp_query->max_num_pages; if ( $total_pages > 1 ) { ?>

<div id=”nav-below” class=”navigation”>

<div class=”nav-previous”><?php next_posts_link(__( ‘<span class=”meta-nav”>&amp;laquo;</span> Older posts’, ‘your-theme’ )) ?></div>

<div class=”nav-next”><?php previous_posts_link(__( ‘Newer posts <span class=”meta-nav”>&amp;raquo;</span>’, ‘your-theme’ )) ?></div>

</div><!– #nav-below –>

<?php } ?>

[/php]

עמוד כותב

אין הרבה לשנות כאן, כמו שאמרתי יצירת תבנית הארכיון (זו שהרגע יצרנו) היא הבסיס לשאר התבניות ואתם ממש הולכים לאהוב את זה: תעתיקו את עמוד הארכיון archive.php ותשנו את השם שלו ל-author.php.

כל מה שצריכים לעשות עכשיו זה לשנות את התגיות העליונות שציינתי מקודם:

[php]

<h1 class=”page-title author”><?php printf( __( ‘ארכיון כותב: <span class=”vcard”>%s</span>’, ‘your-theme’ ), “<a class=’url fn n’ href=’$authordata->user_url’ title=’$authordata->display_name’ rel=’me’>$authordata->display_name</a>” ) ?></h1>
<?php $authordesc = $authordata->user_description; if ( !empty($authordesc) ) echo apply_filters( ‘archive_meta’, ‘<div class=”archive-meta”>’ . $authordesc . ‘</div>’ ); ?>

[/php]

עמוד קטגוריה

עמוד הקטגוריה גם הוא הולך להיות קל ליצירה, כי כבר יש לנו את תבנית הארכיון. שוב, נשכפל את העמוד archive.php ונשנה את שמו ל-category.php. הפעם נפתח קודם את קובץ הפונקציות שיצרנו בעבר ונוסיף לו קצת קוד שיהפוך את עמוד הקטגוריה שלנו לקצת יותר שימושי:

[php]

// For category lists on category archives: Returns other categories except the current one (redundant)
function cats_meow($glue) {
$current_cat = single_cat_title( ”, false );
$separator = “n”;
$cats = explode( $separator, get_the_category_list($separator) );
foreach ( $cats as $i => $str ) {
if ( strstr( $str, “>$current_cat<” ) ) {
unset($cats[$i]);
break;
}
}
if ( empty($cats) )
return false;

return trim(join( $glue, $cats ));
} // end cats_meow

[/php]

הקוד שהכנסנו cat_meow() לא קשור לחתולים, למרות שהם מאוד דורשים התייחסות (ומכאן אשלח ברכת שלום לרוקסי, צ’ילי, רמבו וצ’וצ’ה הנפלאים). הקוד הזה נפטר מקטדוריות חוזרות או לא רלוונטיות לקטגוריה הנבחרת. נחזור לעמוד הקטגוריה, כמו בעמוד הכותב נחליך את אזור התגיות בקוד הבא:

[php]

<h1 class=”page-title”><?php _e( ‘ארכיון קטגוריה:’, ‘your-theme’ ) ?> <span><?php single_cat_title() ?></span></span></h1>
<?php $categorydesc = category_description(); if ( !empty($categorydesc) ) echo apply_filters( ‘archive_meta’, ‘<div class=”archive-meta”>’ . $categorydesc . ‘</div>’ ); ?>

[/php]

בדיב שנקרא .entry-utility נחליף את:

[php]

<span><span><?php _e( ‘פורסם ב ‘, ‘your-theme’ ); ?></span><?php echo get_the_category_list(‘, ‘); ?></span>

[/php]

בקוד הזה:

[php]

<?php if ( $cats_meow = cats_meow(‘, ‘) ) : // מחזיר את הקטגוריות מלבד זו שהוגדרה ?>
<span class=”cat-links”><?php printf( __( ‘פורסם גם ב %s’, ‘your-theme’ ), $cats_meow ) ?></span>
<span class=”meta-sep”> | </span>
<?php endif ?>

[/php]

רואים? זה היה פשוט. ויש חתולים שעושים מיאו.

עמוד התגיות

עמוד התגיות זהה לחלוטין לעמוד הקטגוריות מלבד העובדה שהוא, ובכן, לתגיות. גם פה נצטרך להוסיף כמה דברים לעמוד הפונקציות. אבל דבר ראשון, אתם יודעים את התרגיל – שיכפול קובץ הארכיון ושינוי השם ל-tags.php.

עכשיו נוסיף את הקוד הבא לקובץ הפונקציות, כאשר הפעם התג שאנחנו מכניסים יהיה tag_ur_it() שעובד בדיוק כמו cats_meow() רק שהוא מוריד, נכון, את התגית המוצגת:

[php]

// For tag lists on tag archives: Returns other tags except the current one (redundant)
function tag_ur_it($glue) {
$current_tag = single_tag_title( ”, ”, false );
$separator = “n”;
$tags = explode( $separator, get_the_tag_list( “”, “$separator”, “” ) );
foreach ( $tags as $i => $str ) {
if ( strstr( $str, “>$current_tag<” ) ) {
unset($tags[$i]);
break;
}
}
if ( empty($tags) )
return false;

return trim(join( $glue, $tags ));
} // end tag_ur_it

[/php]

עכשיו, בעמוד התגיות (tags.php) נחליף את התגית הראשית כרגיל:

[php]

<h1><?php _e( ‘ארכיון תגית:’, ‘your-theme’ ) ?> <span><?php single_tag_title() ?></span></h1>

[/php]

בדיב שנקרא .entry-utility נחליף את:

[php]

<?php the_tags( ‘<span><span>’ . __(‘תוייג’, ‘your-theme’ ) . ‘</span>’, “, “, “</span>ntttttt<span>|</span>n” ) ?>

[/php]

בקוד הזה:

[php]

<?php if ( $tag_ur_it = tag_ur_it(‘, ‘) ) : // Returns tags other than the one queried ?>
<span class=”tag-links”><?php printf( __( ‘תוויג גם כ %s’, ‘your-theme’ ), $tag_ur_it ) ?></span>
<?php endif; ?>
[/php]

זה הכל! כל התבניות מוכנות. פשוט, נכון? עד הפעם הבאה – אלונזי!

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

יש מצב שתאהבו גם את זה