Categories
ווקומרס - WooCommerce וורדפרס

יצירה אוטומטית של פוסט בוורדפרס

יצירת פוסט למשתמש ברכישת מוצר מסוים בווקומרס (עדכן את ה-ID של המוצר):

add_action( 'woocommerce_order_status_completed', 'condless_create_page' );
function condless_create_page( $order_id ) {
	foreach ( wc_get_order( $order_id )->get_items() as $item ) {
		if ( '9' === $item->get_product_id() ) {
			$user_id = wc_get_order( $order_id )->get_user_id();
			$user = new WP_User( $user_id );
			$user->remove_role( 'customer' );
			$user->add_role( 'author' );
			wp_insert_post( array( 'post_title' => 'My New Page', 'post_status' => 'publish', 'post_author' => $user_id, 'post_type' => 'post') );
		}
	}
}
Categories
וורדפרס

תבנית וורדפרס Twenty Twenty

והנווד.

יצירת תבנית בת- צור את הנתיב wp-content/themes/twentytwenty-child, ובו את הקבצים style.css ו-style-rtl.css עם התוכן:

/*
 Theme Name:   twentytwenty Child
 Template:     twentytwenty
*/

וקובץ functions.php עם התוכן:

<?php
add_action( 'wp_enqueue_scripts', 'condless_theme_enqueue_styles' );
function condless_theme_enqueue_styles() {
        if ( is_rtl() ) {
                wp_enqueue_style( 'parent-style-rtl', get_template_directory_uri() . '/style-rtl.css' );
        } else {
                wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
        }
}

תיקון תצוגת הפונטים (CSS):


body {
    font-family: "Inter var", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, sans-serif;
}

התאמת מבנה ההדר (CSS):

.cover-header-inner-wrapper { min-height: 60vh !important; }
.home .entry-header { display: none; }
.home .post-inner { padding: 0; }

כפי שבוודאי שמת לב- בשונה מתבניות ברירות המחדל האחרות, תבנית זו לא פותחה מאפס, אלא נבנתה על בסיס התבנית צ'פלין של אנדרס נורן.

Categories
וורדפרס

אבטחת וורדפרס

וחדר הסודות.

שיפור אבטחת המערכת ברמת הוורדפרס:

  • אבטח את השרת
  • הענק הרשאות: 755 לתיקיות, 644 לקבצים
  • עדכן באופן תדיר
  • התקן תוספים מעטים ככל האפשר
  • דווח על כל פעילות חשודה בחשבון לספק האחסון שלכם
  • השתמש בכלי המובנה "בריאות אתר"
  • הסר תבניות שלא בשימוש
  • התקן תעודת SSL
  • השתמש במשתמש מסוג "עורך" והתחבר לאדמין רק בעת הצורך
  • ביטול עורך התבניות המובנה בלוח הבקרה- הוסף לקובץ wp-config.php את ההוראה:
define( 'DISALLOW_FILE_EDIT', true );

מניעת אופציית הדפדוף בתיקיות, גישה לקבצים ותיקיות חשובים, והתקפות XSS- הוסף לקובץ htaccess. את ההוראות:

Options -Indexes

<FilesMatch "^.*(xmlrpc.php|error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
# Comment the following directive if multisite
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] 
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

RewriteCond %{HTTP_USER_AGENT} (libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (;|<|>|'|"|\)|\(|%0A|%0D|%22|%27|%28|%3C|%3E|%00).*(libwww-perl|wget|python|nikto|curl|scan|java|winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]
RewriteCond %{THE_REQUEST} \?\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} \/\*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} etc/passwd [NC,OR]
RewriteCond %{THE_REQUEST} cgi-bin [NC,OR]
RewriteCond %{THE_REQUEST} (%0A|%0D) [NC,OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]
RewriteCond %{QUERY_STRING} (\.\./|\.\.) [OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR] 
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} \=\|w\| [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR] 
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>).* [NC,OR]
RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]
RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR]
RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR]
RewriteCond %{QUERY_STRING} (sp_executesql) [NC]
RewriteRule ^(.*)$ - [F,L]

ביטול אפשרות להרצת PHP- צור קובץ htaccess. בתיקיית ההעלאות עם התוכן:

<Files "*.php">
Order Deny,Allow
Deny from All
</Files>

הסתרת גרסת הוורדפרס ושגיאות התחברות- הוסף לקובץ functions.php שבתבנית הבת:

add_filter( 'the_generator', '__return_false' );
add_filter( 'login_errors', create_function( '$a', "return 'Invalid Input';" ) );

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

find ./ -type f -mtime -15

הסרת נוזקת הפרסומות הקופצות במובייל- מחק את הקבצים wp-tmp.php ,wp-vcd.php ,wp-feed.php מהתיקיה wp-includes, ואת הקוד שיוצר אותם מהקובץ functions.php שבתבניות.

הסרת נוזקת Japanese Keyword Hack- נקה את הקוד הזדוני מהקבצים htaccess. ,wp-config.php ,sitemap.xml ומתיקיית ההעלאות.

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