$data The current data for update_plugins. * * @return stdClass Extended data for update_plugins. */ public function check_for_updates( $data ) { global $wp_version; if ( empty( $data ) ) { return $data; } // We have to figure out if we're safe to upgrade the add-ons, based on what the latest Yoast Free requirements for the WP version is. $yoast_free_data = $this->extract_yoast_data( $data ); foreach ( $this->get_installed_addons() as $plugin_file => $installed_plugin ) { $subscription_slug = $this->get_slug_by_plugin_file( $plugin_file ); $subscription = $this->get_subscription( $subscription_slug ); if ( ! $subscription ) { continue; } $plugin_data = $this->convert_subscription_to_plugin( $subscription, $yoast_free_data, false, $plugin_file ); // Let's assume for now that it will get added in the 'no_update' key that we'll return to the WP API. $is_no_update = true; // If the add-on's version is the latest, we have to do no further checks. if ( version_compare( $installed_plugin['Version'], $plugin_data->new_version, '<' ) ) { // If we haven't retrieved the Yoast Free requirements for the WP version yet, do nothing. The next run will probably get us that information. if ( $plugin_data->requires === null ) { continue; } if ( version_compare( $plugin_data->requires, $wp_version, '<=' ) ) { // The add-on has an available update *and* the Yoast Free requirements for the WP version are also met, so go ahead and show the upgrade info to the user. $is_no_update = false; $data->response[ $plugin_file ] = $plugin_data; if ( $this->has_subscription_expired( $subscription ) ) { unset( $data->response[ $plugin_file ]->package, $data->response[ $plugin_file ]->download_link ); } } } if ( $is_no_update ) { // Still convert subscription when no updates is available. $data->no_update[ $plugin_file ] = $plugin_data; if ( $this->has_subscription_expired( $subscription ) ) { unset( $data->no_update[ $plugin_file ]->package, $data->no_update[ $plugin_file ]->download_link ); } } } return $data; } /** * Extracts Yoast SEO Free's data from the wp.org API response. * * @param object $data The wp.org API response. * * @return object Yoast Free's data from wp.org. */ protected function extract_yoast_data( $data ) { if ( isset( $data->response[ WPSEO_BASENAME ] ) ) { return $data->response[ WPSEO_BASENAME ]; } if ( isset( $data->no_update[ WPSEO_BASENAME ] ) ) { return $data->no_update[ WPSEO_BASENAME ]; } return (object) []; } /** * If the plugin is lacking an active subscription, throw a warning. * * @param array $plugin_data The data for the plugin in this row. * * @return void */ public function expired_subscription_warning( $plugin_data ) { $subscription = $this->get_subscription( $plugin_data['slug'] ); if ( $subscription && $this->has_subscription_expired( $subscription ) ) { $addon_link = ( isset( $this->addon_details[ $plugin_data['slug'] ] ) ) ? $this->addon_details[ $plugin_data['slug'] ]['short_link_renewal'] : $this->addon_details[ self::PREMIUM_SLUG ]['short_link_renewal']; $sale_copy = ''; if ( YoastSEO()->classes->get( Promotion_Manager::class )->is( 'black-friday-promotion' ) ) { $sale_copy = sprintf( /* translators: %1$s and %2$s are a opening and closing tag. */ esc_html__( '%1$s30%% OFF - Black Friday %2$s', 'wordpress-seo' ), '', '' ); } echo '

'; echo ' ' . sprintf( /* translators: %1$s is the plugin name, %2$s and %3$s are a link. */ esc_html__( 'Your %1$s plugin cannot be updated as your subscription has expired. %2$sRenew your product subscription%3$s to restore updates and full feature access.', 'wordpress-seo' ), esc_html( $plugin_data['name'] ), '', '' ) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Output is escaped above. . $sale_copy . ''; } } /** * Checks if there are any installed addons. * * @return bool True when there are installed Yoast addons. */ public function has_installed_addons() { $installed_addons = $this->get_installed_addons(); return ! empty( $installed_addons ); } /** * Checks if the plugin is installed and activated in WordPress. * * @param string $slug The class' slug. * * @return bool True when installed and activated. */ public function is_installed( $slug ) { $slug_to_class_map = [ static::PREMIUM_SLUG => 'WPSEO_Premium', static::NEWS_SLUG => 'WPSEO_News', static::WOOCOMMERCE_SLUG => 'Yoast_WooCommerce_SEO', static::VIDEO_SLUG => 'WPSEO_Video_Sitemap', static::LOCAL_SLUG => 'WPSEO_Local_Core', ]; if ( ! isset( $slug_to_class_map[ $slug ] ) ) { return false; } return class_exists( $slug_to_class_map[ $slug ] ); } /** * Validates the addons and show a notice for the ones that are invalid. * * @return void */ public function validate_addons() { $notification_center = Yoast_Notification_Center::get(); if ( $notification_center === null ) { return; } foreach ( $this->addon_details as $slug => $addon_info ) { $notification = $this->create_notification( $addon_info['name'], $addon_info['short_link_activation'] ); // Add a notification when the installed plugin isn't activated in My Yoast. if ( $this->is_installed( $slug ) && ! $this->has_valid_subscription( $slug ) ) { $notification_center->add_notification( $notification ); continue; } $notification_center->remove_notification( $notification ); } } /** * Checks if the user has any active addons. * * @return bool Whether there are active addons. */ public function has_active_addons() { $active_addons = $this->get_active_addons(); return ! empty( $active_addons ); } /** * Removes the site information transients. * * @codeCoverageIgnore * * @return void */ public function remove_site_information_transients() { delete_transient( self::SITE_INFORMATION_TRANSIENT ); delete_transient( self::SITE_INFORMATION_TRANSIENT_QUICK ); } /** * Creates an instance of Yoast_Notification. * * @param string $product_name The product to create the notification for. * @param string $short_link The short link for the addon notification. * * @return Yoast_Notification The created notification. */ protected function create_notification( $product_name, $short_link ) { $notification_options = [ 'type' => Yoast_Notification::ERROR, 'id' => 'wpseo-dismiss-' . sanitize_title_with_dashes( $product_name, null, 'save' ), 'capabilities' => 'wpseo_manage_options', ]; return new Yoast_Notification( sprintf( /* translators: %1$s expands to a strong tag, %2$s expands to the product name, %3$s expands to a closing strong tag, %4$s expands to an a tag. %5$s expands to MyYoast, %6$s expands to a closing a tag, %7$s expands to the product name */ __( '%1$s %2$s isn\'t working as expected %3$s and you are not receiving updates or support! Make sure to %4$s activate your product subscription in %5$s%6$s to unlock all the features of %7$s.', 'wordpress-seo' ), '', $product_name, '', '', 'MyYoast', '', $product_name ), $notification_options ); } /** * Checks whether a plugin expiry date has been passed. * * @param stdClass $subscription Plugin subscription. * * @return bool Has the plugin expired. */ protected function has_subscription_expired( $subscription ) { return ( strtotime( $subscription->expiry_date ) - time() ) < 0; } /** * Converts a subscription to plugin based format. * * @param stdClass $subscription The subscription to con $data The current data for update_plugins. * * @return stdClass Extended data for update_plugins. */ public function check_for_updates( $data ) { global $wp_version; if ( empty( $data ) ) { return $data; } // We have to figure out if we're safe to upgrade the add-ons, based on what the latest Yoast Free requirements for the WP version is. $yoast_free_data = $this->extract_yoast_data( $data ); foreach ( $this->get_installed_addons() as $plugin_file => $installed_plugin ) { $subscription_slug = $this->get_slug_by_plugin_file( $plugin_file ); $subscription = $this->get_subscription( $subscription_slug ); if ( ! $subscription ) { continue; } $plugin_data = $this->convert_subscription_to_plugin( $subscription, $yoast_free_data, false, $plugin_file ); // Let's assume for now that it will get added in the 'no_update' key that we'll return to the WP API. $is_no_update = true; // If the add-on's version is the latest, we have to do no further checks. if ( version_compare( $installed_plugin['Version'], $plugin_data->new_version, '<' ) ) { // If we haven't retrieved the Yoast Free requirements for the WP version yet, do nothing. The next run will probably get us that information. if ( $plugin_data->requires === null ) { continue; } if ( version_compare( $plugin_data->requires, $wp_version, '<=' ) ) { // The add-on has an available update *and* the Yoast Free requirements for the WP version are also met, so go ahead and show the upgrade info to the user. $is_no_update = false; $data->response[ $plugin_file ] = $plugin_data; if ( $this->has_subscription_expired( $subscription ) ) { unset( $data->response[ $plugin_file ]->package, $data->response[ $plugin_file ]->download_link ); } } } if ( $is_no_update ) { // Still convert subscription when no updates is available. $data->no_update[ $plugin_file ] = $plugin_data; if ( $this->has_subscription_expired( $subscription ) ) { unset( $data->no_update[ $plugin_file ]->package, $data->no_update[ $plugin_file ]->download_link ); } } } return $data; } /** * Extracts Yoast SEO Free's data from the wp.org API response. * * @param object $data The wp.org API response. * * @return object Yoast Free's data from wp.org. */ protected function extract_yoast_data( $data ) { if ( isset( $data->response[ WPSEO_BASENAME ] ) ) { return $data->response[ WPSEO_BASENAME ]; } if ( isset( $data->no_update[ WPSEO_BASENAME ] ) ) { return $data->no_update[ WPSEO_BASENAME ]; } return (object) []; } /** * If the plugin is lacking an active subscription, throw a warning. * * @param array $plugin_data The data for the plugin in this row. * * @return void */ public function expired_subscription_warning( $plugin_data ) { $subscription = $this->get_subscription( $plugin_data['slug'] ); if ( $subscription && $this->has_subscription_expired( $subscription ) ) { $addon_link = ( isset( $this->addon_details[ $plugin_data['slug'] ] ) ) ? $this->addon_details[ $plugin_data['slug'] ]['short_link_renewal'] : $this->addon_details[ self::PREMIUM_SLUG ]['short_link_renewal']; $sale_copy = ''; if ( YoastSEO()->classes->get( Promotion_Manager::class )->is( 'black-friday-promotion' ) ) { $sale_copy = sprintf( /* translators: %1$s and %2$s are a opening and closing tag. */ esc_html__( '%1$s30%% OFF - Black Friday %2$s', 'wordpress-seo' ), '', '' ); } echo '

'; echo ' ' . sprintf( /* translators: %1$s is the plugin name, %2$s and %3$s are a link. */ esc_html__( 'Your %1$s plugin cannot be updated as your subscription has expired. %2$sRenew your product subscription%3$s to restore updates and full feature access.', 'wordpress-seo' ), esc_html( $plugin_data['name'] ), '', '' ) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Output is escaped above. . $sale_copy . ''; } } /** * Checks if there are any installed addons. * * @return bool True when there are installed Yoast addons. */ public function has_installed_addons() { $installed_addons = $this->get_installed_addons(); return ! empty( $installed_addons ); } /** * Checks if the plugin is installed and activated in WordPress. * * @param string $slug The class' slug. * * @return bool True when installed and activated. */ public function is_installed( $slug ) { $slug_to_class_map = [ static::PREMIUM_SLUG => 'WPSEO_Premium', static::NEWS_SLUG => 'WPSEO_News', static::WOOCOMMERCE_SLUG => 'Yoast_WooCommerce_SEO', static::VIDEO_SLUG => 'WPSEO_Video_Sitemap', static::LOCAL_SLUG => 'WPSEO_Local_Core', ]; if ( ! isset( $slug_to_class_map[ $slug ] ) ) { return false; } return class_exists( $slug_to_class_map[ $slug ] ); } /** * Validates the addons and show a notice for the ones that are invalid. * * @return void */ public function validate_addons() { $notification_center = Yoast_Notification_Center::get(); if ( $notification_center === null ) { return; } foreach ( $this->addon_details as $slug => $addon_info ) { $notification = $this->create_notification( $addon_info['name'], $addon_info['short_link_activation'] ); // Add a notification when the installed plugin isn't activated in My Yoast. if ( $this->is_installed( $slug ) && ! $this->has_valid_subscription( $slug ) ) { $notification_center->add_notification( $notification ); continue; } $notification_center->remove_notification( $notification ); } } /** * Checks if the user has any active addons. * * @return bool Whether there are active addons. */ public function has_active_addons() { $active_addons = $this->get_active_addons(); return ! empty( $active_addons ); } /** * Removes the site information transients. * * @codeCoverageIgnore * * @return void */ public function remove_site_information_transients() { delete_transient( self::SITE_INFORMATION_TRANSIENT ); delete_transient( self::SITE_INFORMATION_TRANSIENT_QUICK ); } /** * Creates an instance of Yoast_Notification. * * @param string $product_name The product to create the notification for. * @param string $short_link The short link for the addon notification. * * @return Yoast_Notification The created notification. */ protected function create_notification( $product_name, $short_link ) { $notification_options = [ 'type' => Yoast_Notification::ERROR, 'id' => 'wpseo-dismiss-' . sanitize_title_with_dashes( $product_name, null, 'save' ), 'capabilities' => 'wpseo_manage_options', ]; return new Yoast_Notification( sprintf( /* translators: %1$s expands to a strong tag, %2$s expands to the product name, %3$s expands to a closing strong tag, %4$s expands to an a tag. %5$s expands to MyYoast, %6$s expands to a closing a tag, %7$s expands to the product name */ __( '%1$s %2$s isn\'t working as expected %3$s and you are not receiving updates or support! Make sure to %4$s activate your product subscription in %5$s%6$s to unlock all the features of %7$s.', 'wordpress-seo' ), '', $product_name, '', '', 'MyYoast', '', $product_name ), $notification_options ); } /** * Checks whether a plugin expiry date has been passed. * * @param stdClass $subscription Plugin subscription. * * @return bool Has the plugin expired. */ protected function has_subscription_expired( $subscription ) { return ( strtotime( $subscription->expiry_date ) - time() ) < 0; } /** * Converts a subscription to plugin based format. * * @param stdClass $subscription The subscription to con خاک گربه 12 لیتری Archives - سیلپا پت
عبور به ناوبری رفتن به محتوای اصلی
مشاوره و راهنمایی رایگان برای انتخاب بهترین وسایل پت نازنینتون 🐾
سیلپا پت
ورود / ثبت نام
جستجو
0 علاقه مندی
0 موارد تومان 0
منو
سیلپا پت
0 موارد تومان 0
دسته بندی کالاها
  • خانه
  • دنیای سگ
    • کنسرو سگ
    • غذای خشک سگ
    • مکمل‌های سگ
    • تشویقی و اسنک
    • ظرف و لوازم تغذیه
    • لباس و قلاده
    • اسباب‌ بازی سگ
    • بهداشت و مراقبت
    • تخت و جای خواب سگ
  • سرزمین گربه ها
    • غذای خشک گربه
    • کنسرو گربه
    • گورمت و پوچ گربه
    • بستنی گربه
    • مکمل‌های گربه
    • تشویقی و اسنک
    • لباس و قلاده
    • ظرف غذا و آب
    • اسباب‌بازی گربه
    • بهداشت و شست‌وشو
    • خاک و لوازم توالت
  • وبلاگ
  • درباره ما
  • تماس با ما
  • خانه
  • فروشگاه
  • وبلاگ
  • تماس با ما
  • درباره ما
خانه محصولات برچسب خورده “خاک گربه 12 لیتری”

فیلتر های فروشگاه

وضعیت محصول
  • محصولات تخفیف دار
  • محصولات موجود
دسته‌ بندی محصولات
  • بدون دسته بندی
  • دنیای سگ
    • اسباب‌ بازی سگ
    • بهداشت و مراقبت
    • تخت و جای خواب سگ
    • تشویقی و اسنک
    • ظرف و لوازم تغذیه
    • غذای خشک سگ
    • کنسرو سگ
    • لباس و قلاده
    • مکمل‌های سگ
  • سرزمین گربه ها
    • اسباب‌بازی گربه
    • بستنی گربه
    • بهداشت و شست‌وشو
    • تخت و جای خواب گربه
    • تشویقی و اسنک
    • خاک و لوازم توالت
    • ظرف غذا و آب
    • غذای خشک گربه
    • کنسرو گربه
    • گورمت و پوچ گربه
    • لباس و قلاده
    • مکمل‌های گربه
فیلتر محصولات
حذف فیلترها
  • محصولات موجود
  • محصولات تخفیف دار
هیچ محصولی یافت نشد.

لینک های مهم

  • صفحه اصلی
  • فروشگاه
  • تماس با ما
  • درباره ما
  • وبلاگ
  • قوانین و مقررات
  • حفظ حریم خصوصی

🐾 درباره ما

ما در Silpa Pet، عاشق حیواناتیم!
بیش از ده ساله که با عشق و دقت از دوست‌داشتنی‌ترین موجودات دنیا مراقبت می‌کنیم — از اون نگاه‌های معصوم تا بازی‌های پرانرژیشون، هر لحظه کنارمون پر از حس زندگیه.
برای ما، حیوانات فقط «حیوان خانگی» نیستند؛ اعضای خانواده‌ان ❤️
توی Silpa Pet، تمام هدفمون اینه که با عشق، تجربه و توجه، دنیای شادتری برای حیوانات و صاحبانشون بسازیم.

مسیر های ارتباطی

شماره تماس

09046520523

شماره تماس فروشگاه

۰۲۱۴۶۰۵۸۲۰۹

آدرس خرید حضوری

تهران - چیتگر - میدان دریاچه - خیابان مظفر- مجتمع تجاری خلیج فارس - پلاک : ۵۷ - طبقه : اول - پت شاپ سیلپا

آدرس دفتر فروش

شهریار - بخش : مرکزی - روستای : رزکان - شهر : رضی آباد بالا - خیابان امام خمینی - بن بست ده متری امام رضا - پلاک : 65.0 - طبقه : همکف

ایمیل

Silpapet.website@gmail.com

با ما در ارتباط باشید

Whatsapp Instagram Telegram

کلیه حقوق متعلق به سیلپا پت می باشد.

برای دیدن محصولات که دنبال آن هستید تایپ کنید.
  • منو
  • دسته بندی ها
  • خانه
  • دنیای سگ
    • کنسرو سگ
    • غذای خشک سگ
    • مکمل‌های سگ
    • تشویقی و اسنک
    • ظرف و لوازم تغذیه
    • لباس و قلاده
    • اسباب‌ بازی سگ
    • بهداشت و مراقبت
    • تخت و جای خواب سگ
  • سرزمین گربه ها
    • غذای خشک گربه
    • کنسرو گربه
    • گورمت و پوچ گربه
    • بستنی گربه
    • مکمل‌های گربه
    • تشویقی و اسنک
    • لباس و قلاده
    • ظرف غذا و آب
    • اسباب‌بازی گربه
    • بهداشت و شست‌وشو
    • خاک و لوازم توالت
  • وبلاگ
  • درباره ما
  • تماس با ما
  • خانه
  • دنیای سگ
    • کنسرو سگ
    • غذای خشک سگ
    • مکمل‌های سگ
    • تشویقی و اسنک
    • ظرف و لوازم تغذیه
    • لباس و قلاده
    • اسباب‌ بازی سگ
    • بهداشت و مراقبت
    • تخت و جای خواب سگ
  • سرزمین گربه ها
    • غذای خشک گربه
    • کنسرو گربه
    • گورمت و پوچ گربه
    • بستنی گربه
    • مکمل‌های گربه
    • تشویقی و اسنک
    • لباس و قلاده
    • ظرف غذا و آب
    • اسباب‌بازی گربه
    • بهداشت و شست‌وشو
    • خاک و لوازم توالت
  • وبلاگ
  • درباره ما
  • تماس با ما
  • علاقه مندی
  • مقایسه
  • ورود / ثبت نام
سبد خرید
بستن
ورود
بستن

رمز عبور را فراموش کرده اید؟

یا

ارسال مجدد کد یکبار مصرف (00:60)

هنوز حساب کاربری ندارید؟

ایجاد حساب کاربری
ورود
با شماره موبایل
با نام کاربری
آیا هنوز عضو نشده اید؟ اکنون ثبت نام کنید
بازنشانی رمزعبور
با شماره موبایل
با نام کاربری
ثبت نام
قبلا عضو شده اید؟ اکنون وارد شوید
فروشگاه
فیلترها
0 علاقه مندی
0 موارد سبد خرید
حساب کاربری من