נאמר ואתם רוצים להשתמש באפשרות התמונה הראשית (post thumbnail) שוורדפרס מספקת, אך יש לכם ארכיון כלשהו עם המון פוסטים וייקח לכם המון זמן להוסיף את אותה תמונה ראשית לכל אחד מאותם פוסטים. אז לפוסטים חדשים ניתן להשתמש בתמונה הראשית בצורה [...]
נאמר ואתם רוצים להשתמש באפשרות התמונה הראשית (post thumbnail) שוורדפרס מספקת, אך יש לכם ארכיון כלשהו עם המון פוסטים וייקח לכם המון זמן להוסיף את אותה תמונה ראשית לכל אחד מאותם פוסטים.
אז לפוסטים חדשים ניתן להשתמש בתמונה הראשית בצורה סטנדרטית, אך אם לפוסטים ישנים אתם מעוניינים להשתמש בתמונה הראשונה שמופיעה בתוכן הפוסט כתמונה הראשית, או תמונה כלשהי דיפולטיבית אם לא קיימות תמונות בתוכן הפוסט הספציפי – הוסיפו את הקוד הבא ל functions.php
:
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+?src=[\'"]([^\'"]+)[\'"].*?>/i', $post->post_content, $matches);
$first_img = $matches[1][0];
if(empty($first_img)) {
$first_img = "/path/to/default.png";
}
return $first_img;
}
ובכדי להשתמש בזה בתוך הלולאה של וורדפרס:
if ( get_the_post_thumbnail($post_id) != '' ) {
echo '<a href="'; the_permalink(); echo '" class="thumbnail-wrapper">';
the_post_thumbnail();
echo '</a>';
} else {
echo '<a href="'; the_permalink(); echo '" class="thumbnail-wrapper">';
echo '<img src="';
echo catch_that_image();
echo '" alt="" />';
echo '</a>';
}
הפונקציה body_class עוזרת להוסיף קלאסים לתגית ה body שבדרך מכילה אינפורמציה על איזה סוג עמוד מוצג כרגע, וכנראה לטובת האפשרות לעצב אלמנטים מסויים בעמוד המסויים לפי אותו קלאס ספציפי. אך משום מה וורדפרס אינה מוסיפה קלאס המתאר באיזו קטגוריה (או [...]
הפונקציה body_class עוזרת להוסיף קלאסים לתגית ה body
שבדרך מכילה אינפורמציה על איזה סוג עמוד מוצג כרגע, וכנראה לטובת האפשרות לעצב אלמנטים מסויים בעמוד המסויים לפי אותו קלאס ספציפי.
אך משום מה וורדפרס אינה מוסיפה קלאס המתאר באיזו קטגוריה (או קטגוריות) אתם נמצאים בעמוד פוסט יחיד (נאמר single.php
). בכדי להוסיך את השם (היפה) של הקטגוריה לאותה תגית body ניתן להשתמש בקוד הבא:
function sv_add_category_to_single($classes) {
if (is_single() ) {
global $post;
foreach((get_the_category($post->ID)) as $category) {
// add category slug to the $classes array
$classes[] = $category->category_nicename;
}
}
// return the $classes array
return $classes;
}
add_filter('body_class','sv_add_category_to_single');
בכדי לאפשר thumbnails או תמונות ראשיות בפוסטים, כל שעליכם לעשות הוא להוסיף את השורה הבאה לקובץ functions.php של התבנית שלכם: add_theme_support('post-thumbnails'); גם די פשוט להציג תמונה זו כ HTML המייצר את תגית ה <img> הרצויה: get_the_post_thumbnail(); אך מה במידה ואתם [...]
בכדי לאפשר thumbnails או תמונות ראשיות בפוסטים, כל שעליכם לעשות הוא להוסיף את השורה הבאה לקובץ functions.php
של התבנית שלכם:
add_theme_support('post-thumbnails');
גם די פשוט להציג תמונה זו כ HTML המייצר את תגית ה <img>
הרצויה:
get_the_post_thumbnail();
אך מה במידה ואתם צריכים רק את הקישור לתמונה ראשית זו? נניח במצב בו את רוצים להשתמש בה כ background-image
על אלמנט מסויים. אז זה לא פשוט כפי שאני מצפה שיהיה, עם זאת לא כזה מסובך. מה שעליכם לעשות הוא להוסיף את הקוד הבא בתוך הלולאה של וורדפרס:
המשתנה $thumb_url
יהיה הקישור לתמונה הראשית של הפוסט המדובר…
פונקציות אלו אם אינכם יודעים יוצרים קישורים לפוסט הקודם ולפוסט הבא. קיימות לאלו לא מעט אפשרויות אך לו כזו המאפשרת להוסיף קלאס לקישור. אם תרצו לעשות זאת הוסיפו את הקוד הבא לקובץ functions.php: add_filter('next_posts_link_attributes', 'posts_link_attributes'); add_filter('previous_posts_link_attributes', 'posts_link_attributes'); function posts_link_attributes() { [...]
פונקציות אלו אם אינכם יודעים יוצרים קישורים לפוסט הקודם ולפוסט הבא. קיימות לאלו לא מעט אפשרויות אך לו כזו המאפשרת להוסיף קלאס לקישור. אם תרצו לעשות זאת הוסיפו את הקוד הבא לקובץ functions.php
:
add_filter('next_posts_link_attributes', 'posts_link_attributes');
add_filter('previous_posts_link_attributes', 'posts_link_attributes');
function posts_link_attributes() {
return 'class="styled-button"';
}
הדרך הפשוטה ביותר לשנות את סדר הפוסטים בעמוד המשתמש בקובץ archive.php יהיה להשתמש בהוק pre_get_posts. עליכם במקרה זה לוודא שהשאילתא (query) היא זו לה אתם רוצים לבצע את השינוי כמובן. שימוש בתנאי is_archive או is_post_type_archive אמור לספק במקרה זה. הנה [...]
הדרך הפשוטה ביותר לשנות את סדר הפוסטים בעמוד המשתמש בקובץ archive.php יהיה להשתמש בהוק pre_get_posts. עליכם במקרה זה לוודא שהשאילתא (query) היא זו לה אתם רוצים לבצע את השינוי כמובן.
שימוש בתנאי is_archive או is_post_type_archive אמור לספק במקרה זה. הנה דוגמה:
function sv_change_sort_order($query){
if(is_archive()):
//If you wanted it for the archive of a custom post type use: is_post_type_archive( $post_type )
//Set the order ASC or DESC
$query->set( 'order', 'ASC' );
//Set the orderby
$query->set( 'orderby', 'title' );
endif;
}
add_action( 'pre_get_posts', 'sv_change_sort_order');
ייתכן ותרצו לקבל עוד מידע על ההיררכיה של תבניות וורדפרס אם אינכם מבינים על מה מדובר.
לחלופין, אם אתם מעדיפים דרך גרפית לניהול הסדר, ניתן להשתמש בתוסף הייעודי – שינוי סדר תכנים מותאמים אישית בוורדפרס שמציע ממשק גרירה ושחרור ישירות בלוח הבקרה.
הוספת הקוד הבא ל functions.php של התבנית שלכם, ימנע מוורדפרס לבצע הפנייה אוטומטית של URL לא נכון לעמוד או פוסט בעל כתובת URL דומה. /** stop guessing urls */ function sv_no_redirect_404($redirect_url) { if (is_404()) { return false; } return $redirect_url; [...]
הוספת הקוד הבא ל functions.php
של התבנית שלכם, ימנע מוורדפרס לבצע הפנייה אוטומטית של URL לא נכון לעמוד או פוסט בעל כתובת URL דומה.
/** stop guessing urls */
function sv_no_redirect_404($redirect_url) {
if (is_404()) {
return false;
}
return $redirect_url;
}
add_filter('redirect_canonical', 'sv_no_redirect_404');
You might find more information by search google for "Stop wordpress from guessing url's".
כברירת מחדל וורדפרס משתמשת בפרמטר "s" כ Query String על מנת לבצע חיפוש באתר. במקרים מסויימים תרצו לשנות פרמטר זה למחרוזת שונה. ניתן לעשות זאת בקלות על ידי הפונקציה הבאה: function change_search_url_rewrite() { if ( is_search() && ! empty( $_GET['s'] [...]
כברירת מחדל וורדפרס משתמשת בפרמטר "s"
כ Query String על מנת לבצע חיפוש באתר. במקרים מסויימים תרצו לשנות פרמטר זה למחרוזת שונה. ניתן לעשות זאת בקלות על ידי הפונקציה הבאה:
function change_search_url_rewrite() {
if ( is_search() && ! empty( $_GET['s'] ) ) {
wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) );
exit();
}
}
add_action( 'template_redirect', 'change_search_url_rewrite' );
לאחר הוספת פונקציה זו, כתובת החיפוש תהיה serach/test
במקום ?s=test
בכדי להציג את קטגוריית המוצר בפירורי הלחם של ווקומרס יש להוסיף את הקוד הבא לקובץ functions.php של תבנית הבת שלכם: /** * Show product categories in WooCommerce breadcrumbs */ // Get breadcrumbs on product pages that read: Home > Shop [...]
בכדי להציג את קטגוריית המוצר בפירורי הלחם של ווקומרס יש להוסיף את הקוד הבא לקובץ functions.php
של תבנית הבת שלכם:
/**
* Show product categories in WooCommerce breadcrumbs
*/
// Get breadcrumbs on product pages that read: Home > Shop > Product category > Product Name
add_filter( 'woo_breadcrumbs_trail', 'woo_custom_breadcrumbs_trail_add_product_categories', 20 );
function woo_custom_breadcrumbs_trail_add_product_categories ( $trail ) {
if ( ( get_post_type() == 'product' ) && is_singular() ) {
global $post;
$taxonomy = 'product_cat';
$terms = get_the_terms( $post->ID, $taxonomy );
$links = array();
if ( $terms && ! is_wp_error( $terms ) ) {
$count = 0;
foreach ( $terms as $c ) {
$count++;
if ( $count > 1 ) { continue; }
$parents = woo_get_term_parents( $c->term_id, $taxonomy, true, ', ', $c->name, array() );
if ( $parents != '' && ! is_wp_error( $parents ) ) {
$parents_arr = explode( ', ', $parents );
foreach ( $parents_arr as $p ) {
if ( $p != '' ) { $links[] = $p; }
}
}
}
// Add the trail back on to the end.
// $links[] = $trail['trail_end'];
$trail_end = get_the_title($post->ID);
// Add the new links, and the original trail's end, back into the trail.
array_splice( $trail, 2, count( $trail ) - 1, $links );
$trail['trail_end'] = $trail_end;
}
}
return $trail;
}
/**
* Retrieve term parents with separator.
*
* @param int $id Term ID.
* @param string $taxonomy.
* @param bool $link Optional, default is false. Whether to format with link.
* @param string $separator Optional, default is '/'. How to separate terms.
* @param bool $nicename Optional, default is false. Whether to use nice name for display.
* @param array $visited Optional. Already linked to terms to prevent duplicates.
* @return string
*/
if ( ! function_exists( 'woo_get_term_parents' ) ) {
function woo_get_term_parents( $id, $taxonomy, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
$chain = '';
$parent = &get_term( $id, $taxonomy );
if ( is_wp_error( $parent ) )
return $parent;
if ( $nicename ) {
$name = $parent->slug;
} else {
$name = $parent->name;
}
if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
$visited[] = $parent->parent;
$chain .= woo_get_term_parents( $parent->parent, $taxonomy, $link, $separator, $nicename, $visited );
}
if ( $link ) {
$chain .= '<a href="' . get_term_link( $parent, $taxonomy ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $parent->name ) ) . '">'.$parent->name.'</a>' . $separator;
} else {
$chain .= $name.$separator;
}
return $chain;
}
}
הקוד הבא יציג את הקישור לעמוד ״החשבון שלי״ באתרי ווקומרס. אם המשתמש אינו מחובר יוצג עבורו הקישור עם הטקסט ״הרשם / התחבר״, אחרת יוצג הקישור עם הטקסט ״החשבון שלי״. <?php if ( is_user_logged_in() ) { ?> <a href="<?php echo get_permalink( [...]
הקוד הבא יציג את הקישור לעמוד ״החשבון שלי״ באתרי ווקומרס. אם המשתמש אינו מחובר יוצג עבורו הקישור עם הטקסט ״הרשם / התחבר״, אחרת יוצג הקישור עם הטקסט ״החשבון שלי״.
<?php if ( is_user_logged_in() ) { ?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('My Account','woothemes'); ?>"><?php _e('My Account','woothemes'); ?></a>
<?php }
else { ?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('Login / Register','woothemes'); ?>"><?php _e('Login / Register','woothemes'); ?></a>
<?php } ?>
עוד מידע על עמוד החשבון שלי בפוסט משחקים עם עמוד ״החשבון שלי״ בווקומרס.
זוהי דוגמה פשוטה ללולאה בסיסית של מוצרי ווקומרס (WooCommerce Products Loop). אם אתם מעוניינים לדעת עוד אז הנה פוסט על הדרך הנכונה לשלוף מוצרים של ווקומרס בתבנית שלכם. <ul class="products"> <?php $args = array( 'post_type' => 'product', 'posts_per_page' => 12 [...]
זוהי דוגמה פשוטה ללולאה בסיסית של מוצרי ווקומרס (WooCommerce Products Loop). אם אתם מעוניינים לדעת עוד אז הנה פוסט על הדרך הנכונה לשלוף מוצרים של ווקומרס בתבנית שלכם.
<ul class="products">
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 12
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
?>
</ul><!--/.products-->