הסניפט הנ״ל יהיה שימושי במידה ואתם מעוניינים לקבל את את קטוגוריית האב הראשונה בהיררכיה של פוסט כלשהו. הוסיפו את הקוד הבא לקובץ functions.php: // function to get the top level category object // Usage - $top_cat = get_top_category(); // echo [...]
הסניפט הנ״ל יהיה שימושי במידה ואתם מעוניינים לקבל את את קטוגוריית האב הראשונה בהיררכיה של פוסט כלשהו. הוסיפו את הקוד הבא לקובץ functions.php
:
// function to get the top level category object
// Usage - $top_cat = get_top_category();
// echo $top_cat->slug;
function get_top_category() {
$cats = get_the_category(); // category object
$top_cat_obj = array();
foreach($cats as $cat) {
if ($cat->parent == 0) {
$top_cat_obj[] = $cat;
}
}
$top_cat_obj = $top_cat_obj[0];
return $top_cat_obj;
}
הניחו את הקוד הבא בקובץ functions.php בכדי להוסיף שדות נוספים בעמוד פרופיל המשתמש בוורדפרס. // CUSTOM USER PROFILE FIELDS function my_custom_userfields( $contactmethods ) { // ADD CONTACT CUSTOM FIELDS $contactmethods['contact_phone_office'] = 'Office Phone'; $contactmethods['contact_phone_mobile'] = 'Mobile Phone'; $contactmethods['contact_office_fax'] = 'Office [...]
הניחו את הקוד הבא בקובץ functions.php
בכדי להוסיף שדות נוספים בעמוד פרופיל המשתמש בוורדפרס.
// CUSTOM USER PROFILE FIELDS
function my_custom_userfields( $contactmethods ) {
// ADD CONTACT CUSTOM FIELDS
$contactmethods['contact_phone_office'] = 'Office Phone';
$contactmethods['contact_phone_mobile'] = 'Mobile Phone';
$contactmethods['contact_office_fax'] = 'Office Fax';
// ADD ADDRESS CUSTOM FIELDS
$contactmethods['address_line_1'] = 'Address Line 1';
$contactmethods['address_line_2'] = 'Address Line 2 (optional)';
$contactmethods['address_city'] = 'City';
$contactmethods['address_state'] = 'State';
$contactmethods['address_zipcode'] = 'Zipcode';
}
add_filter('user_contactmethods','my_custom_userfields',10,1);>
הקוד הבא יגרום לסוגי התוכן המותאמים (custom post types) באתר הוורדפרס שלכם להיות מוצגים בחיפוש: // MAKE CUSTOM POST TYPES SEARCHABLE function searchAll( $query ) { if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'person' )); } [...]
הקוד הבא יגרום לסוגי התוכן המותאמים (custom post types) באתר הוורדפרס שלכם להיות מוצגים בחיפוש:
// MAKE CUSTOM POST TYPES SEARCHABLE
function searchAll( $query ) {
if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'person' )); }
return $query;
}
add_filter( 'the_search_query', 'searchAll' );
שנו בשורה מספר 4 לסוגי התוכן הרצויים…
קטע הקוד הבא יוודא כי אף משתמש המחובר ללוח הבקרה של וורדפרס לא יקבל הודעות על עדכוני גירסה לוורדפרס: // REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN global $user_login; get_currentuserinfo(); if ($user_login !== "admin") { // change [...]
קטע הקוד הבא יוודא כי אף משתמש המחובר ללוח הבקרה של וורדפרס לא יקבל הודעות על עדכוני גירסה לוורדפרס:
// REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN
global $user_login;
get_currentuserinfo();
if ($user_login !== "admin") { // change admin to the username that gets the updates
add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
}
גירסא נוספת של קוד זה תציג את הודעת העדכון לכל מנהלי האתר ולא רק למשתמש השם admin
:
// REMOVE THE WORDPRESS UPDATE NOTIFICATION FOR ALL USERS EXCEPT SYSADMIN
global $user_login;
get_currentuserinfo();
if (!current_user_can('update_plugins')) { // checks to see if current user can update plugins
add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
}
קטע הקוד הבא יאפשר לכם לשנות את הלוגו בעמוד ההתחברות לוורדפרס כמו גם את הקישור אליו הוא מפנה: add_filter( 'login_headerurl', 'namespace_login_headerurl' ); /** * Replaces the login header logo URL * * @param $url */ function namespace_login_headerurl( $url ) { [...]
קטע הקוד הבא יאפשר לכם לשנות את הלוגו בעמוד ההתחברות לוורדפרס כמו גם את הקישור אליו הוא מפנה:
add_filter( 'login_headerurl', 'namespace_login_headerurl' );
/**
* Replaces the login header logo URL
*
* @param $url
*/
function namespace_login_headerurl( $url ) {
$url = home_url( '/' );
return $url;
}
add_filter( 'login_headerurl', 'namespace_login_headerurl' );
/**
* Replaces the login header logo title
*
* @param $title
*/
function namespace_login_headertitle( $title ) {
$title = get_bloginfo( 'name' );
return $title;
}
add_filter( 'login_headertitle', 'namespace_login_headertitle' );
/**
* Replaces the login header logo
*/
function namespace_login_style() {
echo '<style>.login h1 a { background-image: url( ' . get_template_directory_uri() . '/images/logo.png ) !important; }</style>';
}
add_action( 'login_head', 'namespace_login_style' );
הסניפט הזה עושה משהו די מגניב, האו מוסיף בתפריט הגדרות אפשרות עם קישור בשם "All Settings" המראה רשימה מלאה של כל ההגדרות הקיימות במסד הנתונים הקשורות לאתר הוורדפרס שלכם. הקוד הנ״ל יראה אפשרות זו רק למנהל האתר ויסתיר אותו משאר [...]
הסניפט הזה עושה משהו די מגניב, האו מוסיף בתפריט הגדרות אפשרות עם קישור בשם "All Settings" המראה רשימה מלאה של כל ההגדרות הקיימות במסד הנתונים הקשורות לאתר הוורדפרס שלכם.
הקוד הנ״ל יראה אפשרות זו רק למנהל האתר ויסתיר אותו משאר המשתמשים.
// CUSTOM ADMIN MENU LINK FOR ALL SETTINGS
function all_settings_link() {
add_options_page(__('All Settings'), __('All Settings'), 'administrator', 'options.php');
}
add_action('admin_menu', 'all_settings_link');
ישנה פונקציה מובנית בוורדפרס המאפשרת בדיקה האם מדובר בעמוד מסויים: if ( is_page(5) ) { // do some stuff } או האם העמוד הוא תחת עמוד מסויים (child page): if ( $post->post_parent == '5' ) { // do some stuff [...]
ישנה פונקציה מובנית בוורדפרס המאפשרת בדיקה האם מדובר בעמוד מסויים:
if ( is_page(5) ) {
// do some stuff
}
או האם העמוד הוא תחת עמוד מסויים (child page):
if ( $post->post_parent == '5' ) {
// do some stuff
}
אך אין פונקציה מובנית בוורדפרס שבודקת שני תנאים אלו יחד, וזוהי נורא נחוצה ומצאתי לה הרבה שימושים. לדוגמא – במידה ואנו רוצים לטעון קובץ js לעמוד סרטונים ולכל עמוד שבא תחתיו…
הפונקציה הבאה (הוסיפו לקובץ functions.php) יוצרת פונקציה לוגית חדשה המאפשרת בדיקה זו:
function is_tree($the_page_id) {
// $the_page_id = The ID of the page we're looking for pages underneath
global $post;
// load details about this page
if(is_page()&&($post->post_parent==$the_page_id||is_page($the_page_id)))
return true; // we're at the page or at a sub page
else
return false; // we're elsewhere
};
שימוש
if (is_tree(5)) {
// do some staff
}
לא תגלית מרעישה במיוחד, אך במהלך עבודתי על אופטימיזציה ושיפור זמן הטעינה של הפרוייקט הנוכחי שלי, שמתי לב כי וורדפרס טוענת את הפונט Open Sans מגוגל כברירת מחדל. כמובן שמיהרתי לחפש ולהבין כיצד לבטל טעינת פונטים אלו מכיוון שאיני משתמש בהם [...]
לא תגלית מרעישה במיוחד, אך במהלך עבודתי על אופטימיזציה ושיפור זמן הטעינה של הפרוייקט הנוכחי שלי, שמתי לב כי וורדפרס טוענת את הפונט Open Sans מגוגל כברירת מחדל. כמובן שמיהרתי לחפש ולהבין כיצד לבטל טעינת פונטים אלו מכיוון שאיני משתמש בהם וקריאה לפונטים אלו היא בעצם עוד קריאה מיותרת לשרת (http request) מבחינתי. לאחר חיפושים ובירורים גיליתי זאת:
- וורדפרס טוענת פונט זה רק במידה וסרגל הכלים מופיע ב frontend. כלומר במידה וביטלתם את הסימון של הצגת סרגל הכלים תחת פרופיל המשתמש שלכם, פונט זה לא ייטען ב frontend. מכיוון וסרגל הכלים מופיע תמיד בלוח הבקרה של וורדפרס אז שם הוא עדיין ייטען.
%22%20transform%3D%22translate(.9%20.9)%20scale(1.76563)%22%20fill-opacity%3D%22.5%22%3E%3Cellipse%20fill%3D%22%23fff%22%20cx%3D%22156%22%20cy%3D%2216%22%20rx%3D%2248%22%20ry%3D%2294%22%2F%3E%3Cellipse%20fill%3D%22%23d5d5d5%22%20cx%3D%2252%22%20cy%3D%2216%22%20rx%3D%2256%22%20ry%3D%22111%22%2F%3E%3Cellipse%20fill%3D%22%23d5d5d5%22%20cx%3D%22232%22%20cy%3D%2218%22%20rx%3D%2229%22%20ry%3D%22101%22%2F%3E%3Cellipse%20fill%3D%22%23fff%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(.7489%20-72.49096%2047.25094%20.48814%20155.9%2016.1)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)
- בכדי לבטל את טעינת הפונטים ניתן להשתמש בפונקציה זו
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;
תהיתם כיצד לשנות את ה gif loading animation המופיע בתוסף contact form 7 כברירת מחדל בעת ניסיון שליחה ? הוסיפו את הפילטר הבא לקובץ functions.php ושנו את שם את הקובץ בהתאם: /* custom ajax loader for CF7 */ function my_wpcf7_ajax_loader [...]
תהיתם כיצד לשנות את ה 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'); [...]
קטע הקוד הבא יאפשר לכם לקבוע כי מצב ברירת המחדל של פוסטים באתר הוורדפרס שלכם יהיה פרטי.
<?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' );