# shopbuilder/1.0.0/app/Modules/WishList/Wishlist.php

ShopBuilder – WooCommerce Builder For Elementor, version 1.0.0. 84 lines.

- Page: https://pluginprobe.com/plugins/shopbuilder/1.0.0/code/app/Modules/WishList/Wishlist.php
- Raw: https://pluginprobe.com/plugins/shopbuilder/1.0.0/raw/app/Modules/WishList/Wishlist.php
- Modified: 2023-03-09T09:36:06+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/shopbuilder/1.0.0/code/app/Modules/WishList/Wishlist.php#L10-L20`.

```php
<?php

namespace RadiusTheme\SB\Modules\WishList;

use RadiusTheme\SB\Traits\SingletonTrait;

// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
	exit( 'This script cannot be accessed directly.' );
}

final class Wishlist {

	const KEY          = 'rtsb_wishlist';
	// const WC_MENU_SLUG = 'wishlist';

	/**
	 * @var array
	 */
	public $settings = [];

	//protected $module_id = 'wishlist';

	use SingletonTrait;

	private function __construct() {

		new WishlistRouteV1();

		WishlistFrontEnd::instance();

		if ( is_user_logged_in() ) {
			$cookie_name = WishlistFns::instance()->get_cookie_name();
			if ( isset( $_COOKIE[ $cookie_name ] ) && is_array( json_decode( wp_unslash( $_COOKIE[ $cookie_name ] ), true ) ) ) {

				$ids         = WishlistFns::instance()->get_wishlist_ids();
				$product_ids = [];
				foreach ( $ids as $pid ) {
					$product_ids[ $pid ] = $pid;
				}
				WishlistFns::instance()->update_user_wishlist_ids( $product_ids );
				setcookie( self::KEY, '', time() - 3600, '/' );
			}
		}

		add_action(
			'init',
			function () {
				add_rewrite_endpoint( WishlistFns::WC_MENU_SLUG, EP_ROOT | EP_PAGES );
			}
		);

		add_filter( 'woocommerce_account_menu_items', [ $this, 'add_to_menu' ], 40 );
		add_action( 'woocommerce_account_wishlist_endpoint', [ $this, 'wishlist_content' ] );

		do_action( 'rtsb/module/wishlist/loaded' );
	}

	/**
	 * @param $menu_links
	 *
	 * @return mixed
	 */
	public function add_to_menu( $menu_links ) {

		$menu_links[ WishlistFns::WC_MENU_SLUG ] = esc_html__( 'Wishlist', 'shopbuilder' );

		if ( isset( $menu_links['customer-logout'] ) ) {

			$logout = $menu_links['customer-logout'];
			unset( $menu_links['customer-logout'] );
			$menu_links['customer-logout'] = $logout;
		} else {
			$menu_links['customer-logout'] = esc_html__( 'Logout', 'shopbuilder' );
		}

		return $menu_links;
	}

	public function wishlist_content() {
		echo do_shortcode( '[rtsb_wishlist]' );
	}
}

```
