آموزش طراحی سایت سئو در وبینیو
74 subscribers
21 photos
2 videos
42 files
39 links
کانال وبینیو | طراحی سایت، سئو، دیجیتال مارکتینگ|
👇👇 گروه جهت پرسش و پاسخ و تبادل اطلاعات 👇👇
گروه : @webinew
کانال بله
https://ble.ir/webinew
Download Telegram
یکی از مشکلات دیجیتس اینه که کاربر وقتی لاگین میکنه با موبایل برنمیگرده همون صفحه ای که در اون لاگین کرده . با کد زیر این مشکل برطرف میشه :
#digits #login #my-account #redirect
// برگشت به صفحه ای که بوده در دیجیتس
/**
* Return user to the same page after Digits/WC login by webinew
* Priority: cookie(last page) > request redirect_to (if not my-account) > fallback - Ehsan Ghasimi
*/

/* Save last seen page for guests (avoid login/account pages) */
add_action('init', function () {
if (is_user_logged_in() || is_admin()) return;

$scheme = is_ssl() ? 'https' : 'http';
$url = $scheme . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

if (strpos($url, 'wp-login.php') !== false || preg_match('#/my-account/?($|\?)#', $url)) return;

setcookie('dg_return_to', $url, time() + 1800, '/', '', is_ssl(), false);
}, 5);

/* Helper: pick the correct return url */
function _dg_pick_return_url($current = '') {
$fallback = function_exists('wc_get_page_permalink') ? wc_get_page_permalink('myaccount') : home_url('/');

// 1) If request redirect_to exists and is NOT my-account, honor it
if (!empty($_REQUEST['redirect_to'])) {
$req = esc_url_raw($_REQUEST['redirect_to']);
$path = wp_parse_url($req, PHP_URL_PATH);
if ($path && strpos($path, '/my-account') === false && strpos($path, 'wp-login.php') === false) {
return wp_validate_redirect($req, $fallback);
}
}

// 2) If cookie exists, use it
if (!empty($_COOKIE['dg_return_to'])) {
$ret = esc_url_raw($_COOKIE['dg_return_to']);
if ($ret && strpos($ret, '/my-account') === false && strpos($ret, 'wp-login.php') === false) {
return wp_validate_redirect($ret, $fallback);
}
}

// 3) Else, if current candidate is valid, use it
if ($current && strpos($current, '/my-account') === false && strpos($current, 'wp-login.php') === false) {
return wp_validate_redirect($current, $fallback);
}

return $fallback;
}

/* Fix early when theme/plugin sends ?login=true&redirect_to=/my-account/ */
add_action('init', function () {
if (!is_user_logged_in()
&& isset($_GET['login'])
&& isset($_GET['redirect_to'])
&& preg_match('#/my-account/?$#', (string) $_GET['redirect_to'])
) {
$ref = !empty($_COOKIE['dg_return_to']) ? $_COOKIE['dg_return_to'] : wp_get_raw_referer();
if ($ref && strpos($ref, '/my-account') === false && strpos($ref, 'wp-login.php') === false) {
$_GET['redirect_to'] = $ref;
$_REQUEST['redirect_to'] = $ref;
}
}
}, 6);

/* Enforce destination in Digits hooks */
add_filter('digits_login_redirect', function ($url) {
return _dg_pick_return_url($url);
}, 999);

add_filter('digits_login_user_redirect', function ($url, $user_id) {
return _dg_pick_return_url($url);
}, 999, 2);

/* Enforce destination in WooCommerce login too */
add_filter('woocommerce_login_redirect', function ($redirect, $user) {
return _dg_pick_return_url($redirect);
}, 9999, 2);

/* Neutralize Digits' own WC redirect (if present) */
add_action('init', function () {
if (has_filter('woocommerce_login_redirect', 'digits_wc_login_redirect')) {
remove_filter('woocommerce_login_redirect', 'digits_wc_login_redirect', 10);
}
}, 20);


/* After login, if we land on /?redirect_to=/my-account/, jump to cookie page (your current end-state) */
add_action('template_redirect', function () {
if (is_user_logged_in()
&& isset($_GET['redirect_to'])
&& preg_match('#/my-account/?$#', (string) $_GET['redirect_to'])
&& !empty($_COOKIE['dg_return_to'])
) {
$ret = esc_url_raw($_COOKIE['dg_return_to']);
if ($ret && strpos($ret, '/my-account') === false && strpos($ret, 'wp-login.php') === false) {
// clear cookie to avoid loops, then redirect
setcookie('dg_return_to', '', time() - 3600, '/', '', is_ssl(), false);
wp_safe_redirect( wp_validate_redirect($ret, home_url('/')) );
exit;
}
}
}, 1);
// بازنویسی لینک‌های /my-account تا قبل از کلیک، مقصد را "همین صفحه" کند
add_action('wp_footer', function () {
if (is_user_logged_in() || is_admin()) return; ?>
<script>
(function(){
var here = location.href.split('#')[0];
// لینک‌های رایج به صفحه ورود/اکانت (منو، دکمه، …)
var sels = 'a[href$="/my-account"],a[href$="/my-account/"],a[href*="/my-account?"],a[href*="/my-account/?"]';
document.querySelectorAll(sels).forEach(function(a){
try{
var u = new URL(a.getAttribute('href'), location.origin);
u.searchParams.set('login','true'); // برای باز شدن فرم لاگین
u.searchParams.set('redirect_to', here); // مقصد: همین صفحه
a.setAttribute('href', u.toString());
}catch(e){}
});
})();
</script>
<?php }, 99);
image_2025-10-12_14-15-43.png
95.1 KB
اگر در بخش کروال استیت سرچ کنسول زمان های بالای 1 ثانیه دارید باید یک فکری به حالش بکنید چون کراول بادجت شما رو محدود میکنه. برای این کار کافیه کد زیر رو در مسیر اعلام شده قرار بدید و لاگ ها رو چک کنید ببینید روی کدوم صفحات و چه درخواست هایی سرعت مشکل دارد.
#speed #crawl #seo
این کد را به‌صورت فایل زیر بساز:
wp-content/mu-plugins/shgs-perf-logger.php
(اگر پوشه mu-plugins نبود، بساز)

<?php
/**
* Plugin Name: SHGS Perf Logger (MU)
* Description: لاگ‌کردن زمان اجرای PHP برای صفحات مهم + هدر دیباگ
* Author: Webinew
* Version: 1.0.0
*/

if ( ! defined('ABSPATH') ) exit;

define( 'SHGS_PERF_LOG', WP_CONTENT_DIR . '/webinew-perf.log' );

$GLOBALS['shgs_perf_start'] = microtime(true);

// نگه‌داری نهایتا 5MB
function shgs_perf_maybe_rotate_log() {
$file = SHGS_PERF_LOG;
if ( file_exists($file) && filesize($file) > 5 * 1024 * 1024 ) {
@rename($file, $file . '.' . date('Ymd_His'));
}
}
shgs_perf_maybe_rotate_log();

add_action('shutdown', function () {
$duration = microtime(true) - ( $GLOBALS['shgs_perf_start'] ?? microtime(true) );
$duration_ms = round($duration * 1000, 2);

// نوع صفحه
$type = 'other';
if ( function_exists('is_product') && is_product() ) $type = 'product';
elseif ( function_exists('is_product_category') && is_product_category() ) $type = 'product_cat';
elseif ( is_home() || is_front_page() ) $type = 'home';
elseif ( is_page() ) $type = 'page';
elseif ( is_single() ) $type = 'single';
elseif ( is_archive() ) $type = 'archive';
elseif ( is_search() ) $type = 'search';

// کاربر/بات
$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
$is_bot = ( stripos($ua, 'googlebot') !== false ) ? 'googlebot' : ( stripos($ua, 'bot') !== false ? 'bot' : 'human' );

// وضعیت پاسخ (اگر در دسترس)
$status = http_response_code();

$line = sprintf(
"[%s]\t%s\t%s\t%s\t%s\t%sms\tstatus:%s\n",
date('Y-m-d H:i:s'),
$_SERVER['REQUEST_METHOD'] ?? '-',
( $_SERVER['REQUEST_URI'] ?? '-' ),
$type,
$is_bot,
$duration_ms,
$status
);
error_log($line, 3, SHGS_PERF_LOG);

// برای دیباگ لحظه‌ای در مرورگر
if ( !headers_sent() ) {
header('X-Exec-Time: ' . $duration_ms . 'ms');
header('X-Exec-Type: ' . $type);
}
});


فایل wp-content/shayesteh-perf.log را ببین.
اگر زمان‌ اجرای صفحات product/category گاهی بالای 1500–2000ms شد، باید سراغ بهینه‌سازی Queryها/کش برویم (Object Cache، کاهش ویجت‌های سنگین Elementor، کم‌کردن کوئری‌های Related Products،…).


یکی از راه های مهم و معمول برای کاهش درخواست ها بررسی کران جاب هست و کنترل اون از طریق سی پنل که در پست بعدی آموزش داده خواهد شد.
برطرف کردن خطای فونت در pagespeed
/**
* Force font-display: swap for Elementor Custom Fonts
*/
add_filter( 'elementor_pro/custom_fonts/font_display', function( $current_value, $font_family, $data ) {
return 'swap';
}, 10, 3 );


باعث میشه font-display: swap; در font-face ها اضافه شود.

#webinew #speed #elementortips
digits-8.4.6.zip
12.3 MB
افزونه دیجیتس
8.4.6

تست شده با php 8.3

فقط درگاه ملی پیامک
wp-all-import-pro-v4.11.7.zip
3.9 MB
WP All Import Pro v4.11.7
#webinew
افزونه ایمپورت وردپرس
wp-rocket32012 (1).zip
4.7 MB
افزونه کش وردپرس
راکت
نسخه : v3.20.1.2

#وبینیو
webinew.com
seo-by-rank-math-pro-3.0.102.zip
2.2 MB
Rank Math SEO PRO - BEST WordPress SEO Tool v3.0.102

#webinew
webinew.com
یلداتون مبارک 🍉
👍1
// رفع lcp ویدئو ابتدای سایت
function add_lcp_video_preload() {
?>
<link rel="preload" as="video" href="https://webinew.com/wp-content/uploads/2025/05/A-Cinematic-Highresolution-202505271556x264Q06-03-1404.mp4" fetchpriority="high" type="video/mp4">
<?php
}
add_action('wp_head', 'add_lcp_video_preload');
بعد از 340 ساعت خاموشی مطلق، با اندکی دسترسی به اینترنت بین‌الملل سلام.
امیدوارم در این روزهای سخت، توان ادامه دادن داشته باشید. ❤️‍🩹
​گزارشی کوتاه از وضعیت سئو سایت‌ها در این مدت بحرانی:
​۱. سایت‌های روی سرور ایران (هاست داخلی)
​در این مدت گوگل تقریباً هیچ دسترسی به این وب‌سایت‌ها نداشته است. به‌خصوص در روزهای اوج اختلالات، گزارش‌های کنسول جستجو (Server Connectivity) بیش از ۹۷٪ خطای Crawl failed را نشان می‌دهند.
تبعات: حذف تایتل‌ها و دیسکریپشن‌ها از نتایج جستجو و ریزش شدید رتبه‌ها.
نو ایندکس صفحات چون گوگل فکر می‌کنه این سایت پاک شده و نیست دیگه.
راهکار: فعلاً هیچ اقدام فنی مؤثری نمی‌توان انجام داد؛ باید منتظر ماند.
​۲. سایت‌های روی سرور خارج
​گوگل به این سایت‌ها دسترسی کامل دارد و این در ظاهر خوب است، اما مشکل اصلی جای دیگریست.
مزیت: رتبه‌ها فعلاً حفظ شده‌اند چون ربات‌های گوگل سایت را می‌بینند.
معایب: به دلیل عدم دسترسی کاربران داخل کشور و افت شدید ترافیک، نرخ کلیک و تعامل به صفر نزدیک شده است. این موضوع به زودی منجر به ریزش سنگین رتبه‌ها خواهد شد.
راهکار: کمی صبر کنید؛ اگر وضعیت اینترنت در هفته آتی به همین منوال باقی بماند، برای بقای بیزینس احتمالاً مجبور به انتقال موقت به هاست داخلی خواهید بود.

​چالش بزرگ انتقال
​در حال حاضر بسیاری از هاستینگ‌های داخلی به دلیل محدودیت‌های شبکه، امکان دریافت بک‌آپ مستقیم از سرورهای خارجی را ندارند که این موضوع فرآیند جابه‌جایی را با ریسک و دشواری زیادی همراه کرده است.
​به امید بازگشت روزهای روشن و اینترنت آزاد برای ایران عزیزمان. 🕊
@webinewcom
3
تا وقتی لایو تست لینک های سایت این باشه اون صفحه از طرف ربات های گوگل دیده نمیشه و طبیعتا افت رتبه و در نهایت حذف صفحه از سرپ میشه.
👍1
من امروز هاست سایت رو بعد از ۲۰ روز از هاست ایران بردم آلمان ،بعد از ۲ ساعت ایندکس شد و رتبه هم برگشت( قبلا ۵ بودم الان اومد ۴)،پس زیاد نگران نباشید اگر اصولی سئو شده باشه رتبه ها معمولا برمیگرده.
روی ۶ تا از مانی پیج هام این اتفاق افتاده.
( صفحات سایت اکثرا نوایندکس شده بودند)
👍21
🚨 زنگ خطر گوگل برای فروشگاه‌های اینترنتی: بودجه خزش شما در خطر است!

طبق گزارش جدید تیم فنی گوگل، بسیاری از سایت‌های وردپرسی و ووکامرسی به دلیل یک اشتباه فنی، بودجه خزش (Crawl Budget) خود را هدر می‌دهند. اما داستان چیست؟

🔍 مشکل از کجاست؟
تیم خزش گوگل متوجه شده که پارامترهای اکشن (مثل ?add_to_cart=true) باعث ایجاد بی‌نهایت URL تکراری می‌شوند. وقتی گوگل‌بات به جای خزیدن در صفحات محصولات اصلی، وقتش را تلفِ این لینک‌های بی‌ارزش می‌کند، صفحات جدید شما دیرتر ایندکس می‌شوند یا کلاً از نتایج جا می‌مانند!

ووکامرس دست به کار شد
گوگل مستقیماً با تیم WooCommerce وارد مذاکره شد و خوشبختانه ووکامرس در آپدیت‌های اخیر این باگ را برطرف کرده است. اما طبق گزارش گوگل، هنوز بسیاری از افزونه‌های جانبی (مثل افزونه‌های تقویم یا لیست علاقه‌مندی‌ها) این مشکل را دارند و به درخواست‌های گوگل پاسخ نداده‌اند.

🛠 چه باید کرد؟
اگر صاحب سایت فروشگاهی هستید یا مدیریت سئو سایت‌های وردپرسی را بر عهده دارید، این ۲ اقدام ضروری است:

1️⃣ آپدیت ووکامرس: حتماً هسته ووکامرس را به آخرین نسخه بروزرسانی کنید تا اصلاحات مربوط به پارامترهای سبد خرید اعمال شود.
2️⃣ بهینه‌سازی Robots.txt: منتظر افزونه‌ها نمانید! با اضافه کردن دستورات زیر در فایل robots.txt، دسترسی ربات‌ها به پارامترهای اضافه را ببندید: Disallow: /*add-to-cart=*

پی‌نوشت: گوگل اعلام کرده که حدود ۲۵٪ از مشکلات خزش سایت‌ها فقط مربوط به همین پارامترهای ساده است. با یک حرکت کوچک، سرعت ایندکس سایتتان را چند برابر کنید.

@webinewcom
webinew.com
3
wordpress-seo-premium-26.9.zip
1.2 MB
Yoast SEO Premium - Best Seo Plugin For WP by WEBINEW v26.9

@webinewcom
@09159677791
wp-schema-pro-2.10.7.zip
2.9 MB
WP Schema Pro - Best Add Schema With Out Writing Code by WEBINEW v2.10.7

@webinewcom
حل مشکل لود نشدن المنتور
به احتمال 95 درصد با این روش مشکل حل میشه
کافیه در بخش پیشخوان سایت برید به بخش سلامت سایت از بخش اطلاعات روی دکمه "کپی اطلاعات سایت به کلیپ برد" بزنید و اطلاعات رو بخونی یا بدی هوش مصنوعی برات بخونه و برات پرامترهای زیر ور دربیاره.
اطلاعات زیر کلیدی هست اگر پایین بود تیکت بزنید به هاستینگ ارتقا بدن.
مقادیر مناسب هر بخش رو نوشتم جلوش
WP Memory Limit - 512M
PHP Memory Limit - 1024M
Max Input Variables - 20000
Max Post/Upload Size - 1024M
Time Limit- 300s

#elementor

@webinewcom
google-logger.zip
3.3 KB
لاگر پیشرفته ربات های گوگل نسخه 1.0.2

برای بررسی اینکه گوگل کدوم صفحات رو با چه ایجنتی بررسی کرده و جه استاتوسی دریافت کرده و در فایل لاگ ثبت و در دیتابیس ذخیره نمیشود.

نسخه ابتدایی این افزونه توسط دوست خوبمون ارین کرمی منتشر شده بود که من با صلاح دید خودم یک سری تغییرات روش دادم و دقیق تر شده.