ארכיון: סניפטס | עמוד 6

האם וורדפרס טוענת את הפונט Open Sans כברירת מחדל ?

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

    1. וורדפרס טוענת פונט זה רק במידה וסרגל הכלים מופיע ב frontend. כלומר במידה וביטלתם את הסימון של הצגת סרגל הכלים תחת פרופיל המשתמש שלכם, פונט זה לא ייטען ב frontend. מכיוון וסרגל הכלים מופיע תמיד בלוח הבקרה של וורדפרס אז שם הוא עדיין ייטען.
      סרגל הכלים של וורדפרס
    2. בכדי לבטל את טעינת הפונטים ניתן להשתמש בפונקציה זו functions.php:

if (!function_exists('remove_wp_open_sans')) :
function remove_wp_open_sans() {
    wp_deregister_style( 'open-sans' );
    wp_register_style( 'open-sans', false );
}
add_action('wp_enqueue_scripts', 'remove_wp_open_sans');

// הפעילו את השורה מטה בכדי לבטל את טעינת הפונט גם בלוח <הבקרה>
    // add_action('admin_enqueue_scripts', 'remove_wp_open_sans');
endif;

שינוי ה loading animation בתוסף contact form 7

תהיתם כיצד לשנות את ה gif loading animation המופיע בתוסף contact form 7 כברירת מחדל בעת ניסיון שליחה ? הוסיפו את הפילטר הבא לקובץ functions.php ושנו את שם את הקובץ בהתאם:


/* custom ajax loader for CF7 */
function my_wpcf7_ajax_loader () {
    return  get_bloginfo('stylesheet_directory') . '/img/ajax_loader.gif';
}
add_filter('wpcf7_ajax_loader', 'my_wpcf7_ajax_loader');

אם מעניין אתכם הנושא תמצאו בקישור הבא מידע רחב על עיצוב טפסים ב Contact Form 7.

שינוי ברירת המחדל של פוסטים למצב פרטי

קטע הקוד הבא יאפשר לכם לקבוע כי מצב ברירת המחדל של פוסטים באתר הוורדפרס שלכם יהיה פרטי.

<?php 
/***** BEGIN HERE *****/
function default_posts_to_private()
{
	global $post;

	if ( $post->post_status == 'publish' ) {
		$visibility = 'public';
		$visibility_trans = __('Public');
	} elseif ( !empty( $post->post_password ) ) {
		$visibility = 'password';
		$visibility_trans = __('Password protected');
	} elseif ( $post->post_type == 'post' && is_sticky( $post->ID ) ) {
		$visibility = 'public';
		$visibility_trans = __('Public, Sticky');
	} else {
		$post->post_password = '';
		$visibility = 'private';
		$visibility_trans = __('Private');
	} 
?>

	<script type="text/javascript">
		(function($){
			try {
				$('#post-visibility-display').text('<?php echo $visibility_trans; ?>');
				$('#hidden-post-visibility').val('<?php echo $visibility; ?>');
				$('#visibility-radio-<?php echo $visibility; ?>').attr('checked', true);
			} catch(err){}
		}) (jQuery);
	</script>
	<?php
add_action( 'post_submitbox_misc_actions' , 'default_posts_to_private' );

יצירת מספר טקסונומיות בפונקציה אחת

במצבים בהם אתם עובדים על פרוייקט ונדרשים ליצור מספר טקסונומיות, נכון יהיה להשתמש בפונקציה זו מאשר ליצור פונקציה לכל טקסונומיה בנפרד. הכניסה במערך את הפרמטרים של כל טקסונומיה והפונקציה כבר תדאג לשאר…

<?php
/**
 * Register Multiple Taxonomies
 *
 */
function register_multiple_taxonomies() {
    $taxonomies = array(
        array(
            'slug'         => 'job-department',
            'single_name'  => 'Department',
            'plural_name'  => 'Departments',
            'post_type'    => 'jobs',
            'rewrite'      => array( 'slug' => 'department' ),
        ),
        array(
            'slug'         => 'job-type',
            'single_name'  => 'Type',
            'plural_name'  => 'Types',
            'post_type'    => 'jobs',
            'hierarchical' => false,
        ),
        array(
            'slug'         => 'job-experience',
            'single_name'  => 'Min-Experience',
            'plural_name'  => 'Min-Experiences',
            'post_type'    => 'jobs',
        ),
    );
    foreach( $taxonomies as $taxonomy ) {
        $labels = array(
            'name' => $taxonomy['plural_name'],
            'singular_name' => $taxonomy['single_name'],
            'search_items' =>  'Search ' . $taxonomy['plural_name'],
            'all_items' => 'All ' . $taxonomy['plural_name'],
            'parent_item' => 'Parent ' . $taxonomy['single_name'],
            'parent_item_colon' => 'Parent ' . $taxonomy['single_name'] . ':',
            'edit_item' => 'Edit ' . $taxonomy['single_name'],
            'update_item' => 'Update ' . $taxonomy['single_name'],
            'add_new_item' => 'Add New ' . $taxonomy['single_name'],
            'new_item_name' => 'New ' . $taxonomy['single_name'] . ' Name',
            'menu_name' => $taxonomy['plural_name']
        );
        
        $rewrite = isset( $taxonomy['rewrite'] ) ? $taxonomy['rewrite'] : array( 'slug' => $taxonomy['slug'] );
        $hierarchical = isset( $taxonomy['hierarchical'] ) ? $taxonomy['hierarchical'] : true;
    
        register_taxonomy( $taxonomy['slug'], $taxonomy['post_type'], array(
            'hierarchical' => $hierarchical,
            'labels' => $labels,
            'show_ui' => true,
            'query_var' => true,
            'rewrite' => $rewrite,
        ));
    }
    
}
add_action( 'init', 'register_multiple_taxonomies' );

כיצד לחלק את הפוסטים בלולאה של וורדפרס לקבוצות?

בפרוייקט האחרון שלי, נדרשתי לחלק את הלולאה של וורדפרס לקבוצות של שלושה פוסטים, כלומר במידה וישנם תשעה פוסטים כל שלושה מהם יהיו ב div שעוטף אותן. ניתן לבצע זאת על ידי שימוש ב counter ובדיקה בתוך הלולאה האם הוא כפולה של 3 ואם כן, לסגור את div. במידה ואתם מעוניינים לשנות את מספר הפוסטים בקבוצה פשוט שנו את הספרה 3 בשורה מספר 14. הנה הקוד:

<?php if ( have_posts() ) :
	$i = 0; // counter
	while ( have_posts() ) : the_post();
		if ( $i % 3 == 0 ) { // if counter is multiple of 3, put an opening div ?>
			<div>
		<?php } ?>
				<div class="single_item">
					<h2>
						<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?>
						</a>
					</h2>
				</div>
		<?php $i ++;
		if ( $i % 3 == 0 ) { // if counter is multiple of 3, put an closing div ?>
			</div>
		<?php } ?>

	<?php endwhile; ?>
	<?php
	if ( $i % 3 != 0 ) { // put closing div here if loop is not exactly a multiple of 3 ?>
		</div>
	<?php } ?>

<?php endif; ?>

הוספת תוכן לתיאור המוצר בווקומרס

אם אתם מעוניינים להוסיף תוכן לתיאור המוצרים בווקומרס באופן גורף השתמשו בקוד הבא. הוסיפו אותו לקובץ functions.php בתבנית שלכם ושנו את הטקסט כרצונכם בשורה מספר 5. שימו לב כי קוד זה יוסיף את המידע בסוף התוכן של תיאור המוצרים.

function change_woocommerce_description( $content ) {
    // Only for single product pages in woocommerce
    if ( is_product() ) {
        // The custom content to add
        $custom_content = '<p class="custom-content">' . __("This is the last line in the description", "woocommerce").'</p>';
        // Inserting the custom content at the end of the current product description
        $content .= $custom_content;
    }
    return $content;
}
add_filter( 'the_content', 'change_woocommerce_description' );

הגבלת החיפוש בוורדפרס לכותרת הפוסט בלבד

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

/**
 * Search SQL filter for matching against post title only.
 *
 * @param   string      $search
 * @param   WP_Query    $wp_query
 */
function wpse_11826_search_by_title( $search, $wp_query ) {
    if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) {
        global $wpdb;

        $q = $wp_query->query_vars;
        $n = ! empty( $q['exact'] ) ? '' : '%';

        $search = array();

        foreach ( ( array ) $q['search_terms'] as $term )
            $search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n );

        if ( ! is_user_logged_in() )
            $search[] = "$wpdb->posts.post_password = ''";

        $search = ' AND ' . implode( ' AND ', $search );
    }

    return $search;
}

add_filter( 'posts_search', 'wpse_11826_search_by_title', 10, 2 );

הסירו את Disqus מדפים לא נחוצים - וורדפרס

אם אתם משתמשים ב Disqus, שימו לב כי הוא טוען את קובץ ה Js שלו בכל עמוד ועמוד. הוסיפו את הקוד הבא לקובץ functions.php בכדי לגרום ל Disqus להטען רק בתבנית דף של פוסטים ורק כאשר התגובות פתוחות לאותו פוסט.

function tgm_tame_disqus_comments() {
        if ( is_singular( array( 'post', 'page' ) ) && comments_open() )
                return;
        remove_action( 'loop_end', 'dsq_loop_end' );
        remove_action( 'wp_footer', 'dsq_output_footer_comment_js' );
}

add_action( 'wp_head', 'tgm_tame_disqus_comments' );

הסרת תגיות Html מיותרות מטפסים ב Contact Form 7

Contact Form 7 הוא כלי מעולה להטמעת טפסים באתר וורדפרס, אך לפעמים הוא מוסיף תגיות <p> ו <br> לטופס. אם ברצונכם לבטל זאת הוסיפו את השורה הבאה לקובץ wp-config.php:

define('WPCF7_AUTOP', false );

הוספה והטמעת פונטים של גוגל לאתר וורדפרס

ישנם מספר דרכים להוסיף Google Fonts לאתר וורדפרס, אתן פה דוגמה לשתיים מהן. אפשרות ראשונה והפחות מומלצת היא להוסיף את הפונטים ישירות ל header.php של התבנית (כמובן שעדיף בתבנית בת).

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Lora|Oswald" media="screen">

כשאתם משתמשים בשיטה זו שימו לב כי עליכם להוסיף את הקריאה ל Google Fonts לפני שאתם קוראים לקובץ stylesheet הראשי.

אפשרות שנייה ויותר מומלצת היא על ידי שימוש ב wp_register_style ו wp_enqueue_style. הוסיפו את הקוד הבא לקובץ functions.php:


/* The Right way to add Google Fonts to WordPress */
function add_my_google_fonts() {

	wp_register_style('my-googleFonts', 'https://fonts.googleapis.com/css?family=Open+Sans:300italic,300,600,700,400');
    wp_enqueue_style( 'my-googleFonts');
}
add_action('wp_enqueue_scripts', 'add_my_google_fonts');

ישנה גם אפשרות להטמעה לוקאלית של פונטים מגוגל. להטמעה לוקאלית מספר יתרונות ואם מעניין אתכם הנושא, תנו מבט בפוסט טעינה לוקאלית של פונטים מגוגל (Google Fonts).
.