PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/home/oraclevmware.com/www/wp-content/themes/pisces/framework/classes/
Upload File :
Current File : /home/oraclevmware.com/www/wp-content/themes/pisces/framework/classes/class-woocommerce.php
<?php

// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
    exit( 'Direct script access denied.' );
}

if(!class_exists('Pisces_WooCommerce')) {

    class Pisces_WooCommerce{

        public static $shop_page_id = -1;

        public function __construct(){

            if(!class_exists('WooCommerce')) return;

            self::$shop_page_id = wc_get_page_id('shop');

            add_filter('woocommerce_register_post_type_product', array( $this, 'woocommerce_register_post_type_product') );

            add_filter('pisces/get_site_layout', array( $this, 'set_site_layout') );

            add_filter('pisces/filter/sidebar_primary_name', array( $this, 'set_sidebar_for_shop'), 20 );
            add_filter('pisces/setting/get_setting_by_context', array( $this, 'override_setting_by_context'), 20, 3);

            add_action('init', array( $this, 'set_cookie_default' ), 2 );
            add_action('init', array( $this, 'custom_handling_empty_cart' ), 1 );

            add_filter('body_class', array( $this, 'add_body_class' ), 999 );
            add_filter('woocommerce_add_to_cart_fragments', array( $this, 'modify_ajax_cart_fragments'));


            remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
            remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );

            remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );


            add_action( 'woocommerce_before_main_content', array( $this, 'wrapper_start' ), 10 );
            add_action( 'woocommerce_after_main_content', array( $this, 'wrapper_end' ), 10 );

            /**
             * In Plugin
             */
            add_filter('woocommerce_show_page_title', '__return_false');
            add_action('init', array( $this, 'disable_plugin_hooks'));

            add_filter('woocommerce_placeholder_img_src', array( $this, 'change_placeholder') );

            add_action('la_threesixty_before_get_image_array', array( $this, 'add_script_resize_image_in_360') );
            add_action('la_threesixty_after_get_image_array', array( $this, 'remove_script_resize_image_in_360') );

            /** VC Vendors */
            if(class_exists('WC_Vendors')){
                // Add sold by to product loop before add to cart
                if ( WC_Vendors::$pv_options->get_option( 'sold_by' ) ) {
                    remove_action( 'woocommerce_after_shop_loop_item', array('WCV_Vendor_Shop', 'template_loop_sold_by'), 9 );
                    add_action( 'woocommerce_shop_loop_item_title', array('WCV_Vendor_Shop', 'template_loop_sold_by'), 10 );
                }
            }
            /**
             * In Loop
             */


            /** FOR CATALOG */
            add_filter('subcategory_archive_thumbnail_size', array( $this, 'modify_product_thumbnail_size') );
            add_action('woocommerce_before_subcategory_title', function() { echo '<div class="cat-img">'; }, 9);
            add_action('woocommerce_before_subcategory_title', array( $this, 'add_script_resize_image_in_loop' ), 9 );
            add_action('woocommerce_before_subcategory_title', array( $this, 'add_shop_now_to_catalog'), 10);
            add_action('woocommerce_before_subcategory_title', array( $this, 'remove_script_resize_image_in_loop' ), 11 );
            add_action('woocommerce_before_subcategory_title', function(){ echo '<span class="item--overlay"></span></div>'; }, 11);
            add_action('woocommerce_shop_loop_subcategory_title', function(){ echo '<div class="cat-information">'; }, 1);
            add_action('woocommerce_shop_loop_subcategory_title', array( $this, 'add_desc_to_catalog'), 11);
            add_action('woocommerce_shop_loop_subcategory_title', array( $this, 'add_shop_now_to_catalog'), 15);
            add_action('woocommerce_shop_loop_subcategory_title', function(){ echo '</div>'; }, 20);


            /** END FOR CATALOG */

            remove_action('woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30);
            remove_action('woocommerce_before_shop_loop', 'woocommerce_result_count', 20);

            remove_action('woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10);
            remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5);
            remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10);
            remove_action('woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10);

            add_filter('single_product_archive_thumbnail_size', array( $this, 'modify_product_thumbnail_size') );

            add_filter('loop_shop_per_page', array($this,'change_per_page_default'));

            add_action('woocommerce_before_shop_loop', array( $this, 'render_toolbar') );

            add_action('product_cat_class', array( $this, 'add_class_to_product_category_item' ), 10, 3 );
            add_filter('post_class', array( $this, 'add_class_to_product_loop'), 30, 3 );

            add_action('woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_link_open', 1 );
            add_action('woocommerce_before_shop_loop_item_title', array( $this, 'add_script_resize_image_in_loop' ), 5 );
            add_action('woocommerce_before_shop_loop_item_title', array( $this, 'add_badge_stock_into_loop' ), 10 );
            add_action('woocommerce_before_shop_loop_item_title', array( $this, 'add_second_thumbnail_to_loop' ), 15 );
            add_action('woocommerce_before_shop_loop_item_title', function(){ echo '<div class="item--overlay"></div>'; }, 20 );
            add_action('woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_link_close', 30 );
            add_action('woocommerce_before_shop_loop_item_title', array( $this, 'remove_script_resize_image_in_loop' ), 35 );

            add_action('woocommerce_shop_loop_item_title', array( $this, 'add_category_in_product_listing' ), 5 );
            add_action('woocommerce_shop_loop_item_title', array( $this, 'shop_loop_item_title' ), 10 );


            add_action('woocommerce_after_shop_loop_item_title', array($this, 'render_attribute_in_list'), 11);
            add_action('woocommerce_after_shop_loop_item_title', array( $this, 'shop_loop_item_excerpt' ), 15 );

            add_action('pisces/action/shop_loop_item_action_top', function(){ echo '<div class="wrap-addto">'; }, 5 );
            add_action('pisces/action/shop_loop_item_action_top', array( $this, 'add_compare_btn' ), 7 );
            add_action('pisces/action/shop_loop_item_action_top', array( $this, 'add_wishlist_btn' ), 9 );
            add_action('pisces/action/shop_loop_item_action_top', array( $this, 'add_quick_view_btn' ), 11 );
            add_action('pisces/action/shop_loop_item_action_top', function(){ echo '</div>'; }, 13 );
            add_action('pisces/action/shop_loop_item_action_top', 'woocommerce_template_loop_add_to_cart', 20 );

            add_action('pisces/action/shop_loop_item_action_top', array( $this, 'add_count_up_timer_in_product_listing' ), 40 );

            add_action('pisces/action/shop_loop_item_action', function(){ echo '<div class="wrap-addto">'; }, 5 );
            add_action('pisces/action/shop_loop_item_action', 'woocommerce_template_loop_add_to_cart', 10 );
            add_action('pisces/action/shop_loop_item_action', array( $this, 'add_wishlist_btn' ), 15 );
            add_action('pisces/action/shop_loop_item_action', array( $this, 'add_compare_btn' ), 20 );
            add_action('pisces/action/shop_loop_item_action', function(){ echo '</div>'; }, 25 );

            /**
             * Product Page
             */
            add_action('wp_head', array($this, 'check_condition_show_upsell_crosssel'));
            add_action('woocommerce_before_single_product_summary', array( $this, 'add_count_up_timer_to_single' ), 30);

            add_action('woocommerce_single_product_summary', array( $this, 'add_stock_into_single' ), 9);
            add_action('woocommerce_single_product_summary', array( $this, 'add_sku_to_single_product' ), 15);

            add_action('woocommerce_single_product_summary', array( $this, 'add_wishlist_btn' ), 45);
            add_action('woocommerce_single_product_summary', array( $this, 'add_compare_btn' ), 45);


            add_action('woocommerce_share', array( $this, 'woocommerce_share' ));

            remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40);
            remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50);
            add_action('woocommerce_single_product_summary', function(){ echo '<div class="clearfix"></div>'; }, 50);
            add_action('woocommerce_single_product_summary', 'woocommerce_template_single_meta', 50);


            add_filter('woocommerce_product_description_heading', '__return_empty_string');
            add_filter('woocommerce_product_additional_information_heading', '__return_empty_string');

            add_filter('woocommerce_product_tabs', array( $this, 'add_custom_tab'));

            if( Pisces()->settings->get('product_single_hide_product_title', 'no') == 'yes'){
                remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
            }

            add_filter('template_include', array( $this, 'load_quickview_template'), 10 );

            /**
             * Cart Page
             */

            add_action('wp', array( $this, 'set_recent_product_category_link' ) );

            add_action('woocommerce_cart_collaterals', array( $this, 'add_shipping_calculator_form_into_cart') , 5);
            add_action('woocommerce_cart_collaterals', array( $this, 'add_coupon_form_into_cart') , 6);
            remove_action('woocommerce_cart_collaterals', 'woocommerce_cross_sell_display', 10);

            if(Pisces()->settings->get('crosssell_products', 'off') == 'on'){
                add_action('woocommerce_cart_collaterals', 'woocommerce_cross_sell_display', 30);
            }

            add_action('woocommerce_cart_actions', array( $this, 'add_more_button_to_cart_from'));

            add_action('woocommerce_before_shipping_calculator', array( $this, 'woocommerce_before_shipping_calculator'), 99 );
            add_action('woocommerce_after_shipping_calculator', array( $this, 'woocommerce_after_shipping_calculator'), 1 );
            /**
             * Checkout
             */


            /**
             * Catalog Mode
             */

            if( Pisces()->settings->get('catalog_mode', 'off') == 'on'){
                // In Loop
                remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
                add_filter( 'woocommerce_loop_add_to_cart_link', '__return_empty_string', 10 );
                // In Single
                remove_action('woocommerce_single_product_summary','woocommerce_template_single_add_to_cart',30);
                // In Page
                add_action( 'wp', array( $this, 'set_page_when_active_catalog_mode' ) );

                if( Pisces()->settings->get('catalog_mode_price', 'off') == 'on'){
                    remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
                    remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
                    add_filter('woocommerce_catalog_orderby', array( $this, 'remove_sortby_price_in_toolbar_when_active_catalog' ));
                    add_filter('woocommerce_default_catalog_orderby_options', array( $this, 'remove_sortby_price_in_toolbar_when_active_catalog' ));
                }
            }

            /**
             * Other
             */
            if(class_exists('YITH_WC_Social_Login_Frontend')){
                $yith_wc_login = YITH_WC_Social_Login_Frontend::get_instance();
                remove_action('woocommerce_login_form', array($yith_wc_login, 'social_buttons'), 10);
                add_action('woocommerce_login_form_end', array($yith_wc_login, 'social_buttons'), 10);
            }
        }

        public function wrapper_start(){
            do_action( 'pisces/action/before_render_main' );
            echo '<div id="main" class="site-main">';
            echo '<div class="container">';
            echo '<div class="row">';
            echo '<main id="site-content" class="'. esc_attr(Pisces()->layout->get_main_content_css_class('col-xs-12 site-content')) .'">';
            echo '<div class="site-content-inner">';
            do_action( 'pisces/action/before_render_main_inner' );
            echo '<div class="page-content">';
        }

        public function wrapper_end(){
            echo '</div><!--- ./page-content --->';
            do_action( 'pisces/action/after_render_main_inner' );
            echo '</div><!--- ./site-content-inner --->';
            echo '</main><!--- ./site-content --->';

            get_sidebar();

            echo '</div><!--- ./row --->';
            echo '</div><!--- ./container --->';
            echo '</div><!--- ./site-main --->';
            do_action( 'pisces/action/after_render_main' );
        }

        public function add_body_class($classes){

            return $classes;
        }

        public function set_site_layout($layout){
            if(is_checkout() || is_cart()){
                $layout = 'col-1c';
            }
            if (!is_user_logged_in() && is_account_page()) {
                $layout = 'col-1c';
            }
            return $layout;
        }

        public function set_sidebar_for_shop( $sidebar ) {

            $context = (array) Pisces()->get_current_context();

            if( in_array( 'is_woocommerce', $context ) ){

                if(in_array( 'is_archive', $context ) ){

                    $sidebar = Pisces()->settings->get('shop_sidebar', $sidebar);

                    if(Pisces()->settings->get('shop_global_sidebar', false)){
                        /*
                         * Return global sidebar if option will be enable
                         * We don't need more checking in context
                         */
                        return $sidebar;
                    }

                    if(in_array( 'is_shop', $context)){
                        if( ($single_sidebar = Pisces()->settings->get_post_meta( Pisces()->get_page_id(), 'sidebar')) && !empty($single_sidebar) ){
                            $sidebar = $single_sidebar;
                        }
                    }
                    if(in_array( 'is_product_taxonomy', $context)){
                        if( ($tax_sidebar = Pisces()->settings->get_term_meta( get_queried_object_id(), 'sidebar')) && !empty($tax_sidebar) ){
                            $sidebar = $tax_sidebar;
                        }
                    }
                }

                elseif(in_array('is_product', $context)){
                    $sidebar = Pisces()->settings->get('products_sidebar', $sidebar);

                    if(Pisces()->settings->get('products_global_sidebar', false)){
                        /*
                         * Return global sidebar if option will be enable
                         * We don't need more checking in context
                         */
                        return $sidebar;
                    }
                    if( ($single_sidebar = Pisces()->settings->get_post_meta( get_the_ID(), 'sidebar')) && !empty($single_sidebar) ){
                        $sidebar = $single_sidebar;
                    }
                }
            }

            return $sidebar;
        }

        public function custom_handling_empty_cart(){
            if (isset($_REQUEST['clear-cart'])) {
                global $woocommerce;
                $woocommerce->cart->empty_cart();
            }
        }

        public function woocommerce_register_post_type_product( $args ){

            if( self::$shop_page_id > 0 ){
                $args['labels']['archive_title'] = get_the_title(self::$shop_page_id);
            }
            return $args;
        }

        public function change_placeholder($src){
            return esc_url( get_template_directory_uri() . '/assets/images/wc-placeholder.png' );
        }

        /*
         * Loop
         */

        public function render_toolbar(){
            wc_get_template( 'loop/toolbar.php' );
        }

        public function add_class_to_product_category_item( $classes, $class, $category ){
            $classes[] = 'grid-item';
            return $classes;
        }

        public function add_shop_now_to_catalog(){

        }

        public function add_desc_to_catalog( $category ){

        }

        public function add_class_to_product_loop($classes, $class, $post_id){
            if ( ! $post_id || 'product' !== get_post_type( $post_id ) ) {
                return $classes;
            }

            global $pisces_loop;
            $product = wc_get_product( $post_id );

            if ( $product ) {

                $show_image = false;
                if( 'on' == Pisces()->settings->get('woocommerce_enable_crossfade_effect') ){
                    $show_image = true;
                }
                if(isset($pisces_loop['disable_alt_image']) && true == $pisces_loop['disable_alt_image']){
                    $show_image = false;
                }
                if($show_image && (($galleries = $product->get_gallery_image_ids()) && !empty($galleries[0]))){

                    if(!empty($pisces_loop['loop_layout']) && !empty($pisces_loop['loop_style']) && $pisces_loop['loop_layout'] == 'list' && $pisces_loop['loop_style'] == 'special'){

                    }else{
                        $classes[] = 'thumb-has-effect';
                    }
                }else{
                    $classes[] = 'thumb-no-effect';
                }
                $classes[] = 'prod-rating-' . esc_attr(Pisces()->settings->get('woocommerce_show_rating_on_catalog', 'off'));
            }

            return $classes;
        }

        public function add_script_resize_image_in_loop(){
            global $pisces_loop;
            if(!empty($pisces_loop['image_size'])) {
                Pisces()->images->before_resize();
            }
        }

        public function remove_script_resize_image_in_loop(){
            global $pisces_loop;
            if(!empty($pisces_loop['image_size'])) {
                Pisces()->images->after_resize();
            }
        }

        public function modify_product_thumbnail_size($size){
            global $pisces_loop;
            if(!empty($pisces_loop['image_size'])){
                return $pisces_loop['image_size'];
            }
            return $size;
        }

        public function add_second_thumbnail_to_loop(){
            global $pisces_loop, $product;
            $show_image = false;
            if( 'on' == Pisces()->settings->get('woocommerce_enable_crossfade_effect') ){
                $show_image = true;
            }
            if(isset($pisces_loop['disable_alt_image']) && true == $pisces_loop['disable_alt_image']){
                $show_image = false;
            }
            if(!empty($pisces_loop['loop_layout']) && !empty($pisces_loop['loop_style']) && $pisces_loop['loop_layout'] == 'list' && $pisces_loop['loop_style'] == 'special'){
                $show_image = false;
            }
            if($show_image){
                $ids = $product->get_gallery_image_ids();
                if(!empty($ids) && isset($ids[0])){
                    echo wp_get_attachment_image( $ids[0], apply_filters( 'single_product_archive_thumbnail_size', 'shop_catalog' ) ,false , array('class'=>'wp-alt-image'));
                }
            }
        }

        public static function add_multi_thumbnail_to_loop(){
            global $product;
            if(($galleries = $product->get_gallery_image_ids()) && !empty($galleries)){
                $i = 0;
                echo '<div class="thumb-multi">';
                foreach($galleries as $gallery){
                    $i++;
                    ?>
                    <a href="<?php the_permalink()?>"><span class="thumb-multi-item" style="background-image: url(<?php echo wp_get_attachment_image_url($gallery, apply_filters( 'single_product_archive_thumbnail_size', 'shop_catalog' )); ?>)"></span></a>
                    <?php
                    if($i == 2){
                        break;
                    }
                }
                echo  '</div>';
            }
        }

        public function add_badge_stock_into_loop(){
            global $product;
            $availability = $product->get_availability();
            if(!empty($availability['class']) && $availability['class'] == 'out-of-stock' && !empty($availability['availability'])){
                printf('<span class="new-badge badge-out-of-stock">%s</span>', esc_html($availability['availability']));
            }
        }

        public function add_quick_view_btn(){
            if( 'on' == Pisces()->settings->get('woocommerce_show_quickview_btn', 'off') ){
                global $product;
                printf(
                    '<a class="%s" href="%s" data-href="%s" title="%s">%s</a>',
                    'quickview button la-quickview-button',
                    esc_url(get_the_permalink($product->get_id())),
                    esc_url(add_query_arg('product_quickview', $product->get_id(), get_the_permalink($product->get_id()))),
                    esc_attr_x('Quick Shop', 'front-view', 'pisces'),
                    esc_attr_x('Quick Shop', 'front-view', 'pisces')
                );
            }
        }

        public function add_compare_btn(){
            global $yith_woocompare, $product;
            if (!empty($yith_woocompare->obj) && Pisces()->settings->get('woocommerce_show_compare_btn', 'off') == 'on') {

                $action_add = 'yith-woocompare-add-product';

                $css_class = 'add_compare button';

                if( $yith_woocompare->obj instanceof YITH_Woocompare_Frontend ){
                    $action_add = $yith_woocompare->obj->action_add;
                    if(!empty($yith_woocompare->obj->products_list) && in_array($product->get_id(), $yith_woocompare->obj->products_list)){
                        $css_class .= ' added';
                    }
                }
                $url_args = array('action' => $action_add, 'id' => $product->get_id());
                $url = apply_filters('yith_woocompare_add_product_url', wp_nonce_url(add_query_arg($url_args), $action_add));

                printf(
                    '<a class="%s" href="%s" title="%s" rel="nofollow" data-product_title="%s" data-product_id="%s">%s</a>',
                    esc_attr($css_class),
                    esc_url($url),
                    esc_attr_x('Add to Compare','front-view', 'pisces'),
                    esc_attr($product->get_title()),
                    esc_attr($product->get_id()),
                    esc_attr_x('Add to Compare','front-view', 'pisces')
                );
            }
        }

        public function add_wishlist_btn(){

            if (function_exists('YITH_WCWL') && Pisces()->settings->get('woocommerce_show_wishlist_btn', 'off') == 'on') {
                global $product;
                $default_wishlists = is_user_logged_in() ? YITH_WCWL()->get_wishlists(array('is_default' => true)) : false;
                if (!empty($default_wishlists)) {
                    $default_wishlist = $default_wishlists[0]['ID'];
                } else {
                    $default_wishlist = false;
                }

                if (YITH_WCWL()->is_product_in_wishlist($product->get_id(), $default_wishlist)) {
                    $text = esc_html_x('View Wishlist', 'front-view', 'pisces');
                    $class = 'add_wishlist button added';
                    $url = YITH_WCWL()->get_wishlist_url('');
                } else {
                    $text = esc_html_x('Add to Wishlist', 'front-view', 'pisces');
                    $class = 'add_wishlist button';
                    $url = add_query_arg('add_to_wishlist', $product->get_id(), YITH_WCWL()->get_wishlist_url(''));
                }

                printf(
                    '<a class="%s" href="%s" title="%s" rel="nofollow" data-product_title="%s" data-product_id="%s">%s</a>',
                    esc_attr($class),
                    esc_url($url),
                    esc_attr($text),
                    esc_attr($product->get_title()),
                    esc_attr($product->get_id()),
                    esc_attr($text)
                );
            }
        }

        public function add_count_up_timer_in_product_listing(){
            global $product;
            $sale_price_dates_to = $product->get_date_on_sale_to() && ( $date = $product->get_date_on_sale_to()->getOffsetTimestamp() ) ? date( 'Y/m/d H:i:s', $date ) : '';
            if(!empty($sale_price_dates_to)){
                echo do_shortcode('[la_countdown countdown_opts="sday,shr,smin,ssec" datetime="'. $sale_price_dates_to .'"]');
            }
        }

        public function add_category_in_product_listing(){
            global $product;
            add_filter('get_the_terms', 'pisces_exclude_demo_term_in_category');
            echo wc_get_product_category_list($product->get_id(),'<span>, </span>', '<div class="product_item--category-link">', '</div>');
            remove_filter('get_the_terms', 'pisces_exclude_demo_term_in_category');
        }

        public function shop_loop_item_title(){
            the_title( sprintf( '<h3 class="product_item--title"><a href="%s">', esc_url( get_the_permalink() ) ), '</a></h3>' );
        }

        public function render_attribute_in_list(){
            if(class_exists('LaStudio_Swatch')){
                global $product;
                LaStudio_Swatch::render_attribute_in_product_list_loop($product);
            }
        }

        public function shop_loop_item_excerpt(){
            echo '<div class="item--excerpt">';
            the_excerpt();
            echo '</div>';
        }

        public function change_per_page_default($cols){
            $per_page_array = apply_filters('pisces/filter/product_per_page_array', Pisces()->settings->get('product_per_page_allow', '9,15,30'));
            $per_page = apply_filters('pisces/filter/product_per_page', Pisces()->settings->get('product_per_page_default', 9));
            $per_page_array = explode(',', $per_page_array);
            $per_page_array = array_map('trim', $per_page_array);
            $per_page_array = array_map('absint', $per_page_array);
            asort($per_page_array);
            if (count($per_page_array) > 0 && in_array($per_page, $per_page_array)) {
                $cols = $per_page;
            }
            return $cols;
        }

        public function set_cookie_default(){
            if (isset($_GET['per_page']) && $per_page = $_GET['per_page']) {
                add_filter('pisces/filter/product_per_page', array( $this, 'get_parameter_per_page'));
            }
        }

        public function get_parameter_per_page($per_page) {
            if (isset($_GET['per_page']) && ($_per_page = $_GET['per_page'])) {
                $per_page = $_per_page;
            }
            return $per_page;
        }

        /*
         * Single
         */

        public function add_count_up_timer_to_single(){
            if(!isset($_GET['product_quickview']) && Pisces()->settings->get('show_product_countdown')){
                global $product;
                $sale_price_dates_to = $product->get_date_on_sale_to() && ( $date = $product->get_date_on_sale_to()->getOffsetTimestamp() ) ? date( 'Y/m/d H:i:s', $date ) : '';
                if(!empty($sale_price_dates_to)){
                    echo do_shortcode('[la_countdown countdown_opts="sday,shr,smin,ssec" datetime="'. $sale_price_dates_to .'"]');
                }
            }
        }

        public function check_condition_show_upsell_crosssel(){
            if ( Pisces()->settings->get('related_products', 'off') != 'on' ) {
                remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
            }
            if ( Pisces()->settings->get('upsell_products', 'off') != 'on' ) {
                remove_action('woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15);
            }
        }

        public function add_custom_tab($tabs){
            if ( Pisces()->settings->get('woo_enable_custom_tab', 'off') == 'on' ) {
                $tabs['custom_tab'] = array(
                    'title' => Pisces()->settings->get('woo_custom_tab_title', esc_html_x('Custom Tab', 'front-view', 'pisces')),
                    'priority' => 40,
                    'callback' => array( $this, 'get_custom_tab_content')
                );
            }
            return $tabs;
        }

        public function get_custom_tab_content(){
            echo Pisces_Helper::remove_js_autop( Pisces()->settings->get('woo_custom_tab_content', ''), true);
        }

        public function add_stock_into_single(){
            global $product;
            echo wc_get_stock_html( $product );
        }

        public function add_sku_to_single_product(){
            global $product;
            if ( wc_product_sku_enabled() && ( $product->get_sku() || $product->is_type( 'variable' ) ) ){
                ?>
                <div class="product_meta-top">
                    <span class="sku_wrapper"><?php esc_html_e( 'Product code:', 'pisces' ); ?> <span class="sku"><?php echo ( $sku = $product->get_sku() ) ? $sku : esc_html__( 'N/A', 'pisces' ); ?></span></span>
                </div>
                <?php
            }
        }

        /*
         * Cart
         */

        public function modify_ajax_cart_fragments( $fragments ){
            $fragments['span.la-cart-count'] = sprintf('<span class="component-target-badget la-cart-count">%s</span>', WC()->cart->get_cart_contents_count());
            $text = '<span class="la-cart-text">'. esc_html_x('%s items','front-view', 'pisces') .'</span>';
            $fragments['span.la-cart-text'] = sprintf($text, WC()->cart->get_cart_contents_count());
            $fragments['span.la-cart-total-price'] = sprintf('<span class="la-cart-total-price">%s</span>', WC()->cart->get_cart_total());
            return $fragments;
        }

        public function add_shipping_calculator_form_into_cart(){
            woocommerce_shipping_calculator();
        }

        public function add_coupon_form_into_cart(){
            if ( wc_coupons_enabled() ) : ?>
                <div class="la-coupon-form">
                    <h2><?php echo esc_html_x('Coupon Code', 'front-view', 'pisces') ?></h2>
                    <p><?php echo esc_html_x('Enter your coupon code if you have one.','front-view', 'pisces')?></p>
                    <div class="la-coupon">
                        <p class="form-row form-row-wide">
                            <input type="text" class="input-text" id="coupon_code_ref" value="" placeholder="<?php echo esc_attr_x( 'Enter your coupon code..', 'front-view', 'pisces' ); ?>" />
                        </p>
                        <button type="button" class="button" id="coupon_btn_ref"><?php echo esc_html_x( 'Apply coupon', 'front-view', 'pisces' ); ?></button>
                    </div>
                </div>
            <?php endif;
        }

        public function add_more_button_to_cart_from(){
            $category_recent_link = get_transient( 'la_recent_product_category_link' );
            ?>
            <input type="submit" class="button btn-clear-cart" name="clear-cart" value="<?php echo esc_attr_x('Clear Cart', 'front-view', 'pisces');?>">
            <a href="<?php echo esc_url(!empty($category_recent_link) ? $category_recent_link : wc_get_page_permalink('shop')) ?>" class="btn"><?php echo esc_html_x('Continue Shopping', 'front-view', 'pisces'); ?></a>
<?php
        }

        public function set_recent_product_category_link(){
            if(is_shop()){
                delete_transient( 'la_recent_product_category_link' );
                set_transient( 'la_recent_product_category_link', wc_get_page_permalink('shop') , 60*60*12 );
            }
            else if(is_product_taxonomy()){
                delete_transient( 'la_recent_product_category_link' );
                set_transient( 'la_recent_product_category_link', get_term_link(get_queried_object()), 60*60*12 );
            }
        }

        /*
         * Checkout
         */


        /*
         * Catalog Mode
         */
        public function set_page_when_active_catalog_mode(){
            wp_reset_postdata();
            if (is_cart() || is_checkout()) {
                wp_redirect(wc_get_page_permalink('shop'));
                exit;
            }
        }

        public function remove_sortby_price_in_toolbar_when_active_catalog( $array ){
            if( isset($array['price']) ){
                unset( $array['price'] );
            }
            if( isset($array['price-desc']) ){
                unset( $array['price-desc'] );
            }
            return $array;
        }

        /*
         * Other
         */

        public function disable_plugin_hooks() {
            global $yith_woocompare;
            if(function_exists('YITH_WCWL_Frontend')){
                $yith_wcwl_obj = YITH_WCWL_Frontend();
                remove_action('wp_head', array($yith_wcwl_obj, 'add_button'));
            }
            if( !empty($yith_woocompare->obj) && ($yith_woocompare->obj instanceof YITH_Woocompare_Frontend ) ){
                remove_action('woocommerce_single_product_summary', array($yith_woocompare->obj, 'add_compare_link'), 35);
                remove_action('woocommerce_after_shop_loop_item', array($yith_woocompare->obj, 'add_compare_link'), 20);
            }
        }

        /**
         * @Todo We need check override setting from shop global
         */
        public function override_setting_by_context( $value, $key, $context ){
            if(!in_array('is_woocommerce', $context)){
                return $value;
            }
            /*
             * The first, we need check page title bar
             */
            $value = $this->override_page_title_bar_setting( $value, $key, $context );
            return $value;
        }

        private function override_page_title_bar_setting( $value, $key, $context ){

            if(!in_array('is_product_taxonomy', $context) && !in_array('is_product', $context) && !in_array('is_shop', $context)){
                return $value;
            }

            $array_key_allow = array(
                'page_title_bar_style',
                'page_title_bar_layout',
                'page_title_bar_background',
                'page_title_bar_heading_color',
                'page_title_bar_text_color',
                'page_title_bar_link_color',
                'page_title_bar_link_hover_color',
                'page_title_bar_spacing',
                'page_title_bar_spacing_tablet',
                'page_title_bar_spacing_mobile'
            );
            $arr2 = array(
                'page_title_bar_background',
                'page_title_bar_heading_color',
                'page_title_bar_text_color',
                'page_title_bar_link_color',
                'page_title_bar_link_hover_color',
                'page_title_bar_spacing',
                'page_title_bar_spacing_tablet',
                'page_title_bar_spacing_mobile'
            );

            if( !in_array($key, $array_key_allow) ){
                return $value;
            }

            $func = 'get_post_meta';
            $current_id = get_queried_object_id();

            if(in_array('is_product_taxonomy', $context)){
                $func = 'get_term_meta';
            }

            if(in_array('is_shop', $context)){
                $current_id = self::$shop_page_id;
            }

            if ( $key == 'page_title_bar_layout') {
                $new_value = Pisces()->settings->$func($current_id, $key);

                if($new_value && $new_value != 'inherit'){
                    return $new_value;
                }
            }

            if( Pisces()->settings->$func($current_id, 'page_title_bar_style') == 'yes' && in_array($key, $arr2)){
                return $value;
            }

            $enable_override = Pisces()->settings->get('woo_override_page_title_bar', 'off');
            if($enable_override == 'on'){
                $new_key = 'woo_' . $key;
                return Pisces()->settings->get($new_key, $value);
            }

            return $value;
        }


        public function add_script_resize_image_in_360(){
            Pisces()->images->before_resize();
        }

        public function remove_script_resize_image_in_360(){
            Pisces()->images->after_resize();
        }

        public function woocommerce_share(){
            echo '<div class="clearfix"></div>';
            if(Pisces()->settings->get('product_sharing') == 'on'){
                $post_link = get_permalink();
                $post_title = get_the_title();
                $image = '';
                if(has_post_thumbnail()){
                    $image = get_the_post_thumbnail_url(get_the_ID(), 'full');
                }
                echo '<div class="product-share-box">';
                pisces_social_sharing($post_link,$post_title,$image);
                echo '</div>';
            }
        }

        public function load_quickview_template( $template ){
            if(is_singular('product') && isset($_GET['product_quickview'])){
                $file     = locate_template( array(
                    'woocommerce/single-quickview.php'
                ) );
                if($file){
                    return $file;
                }
            }
            return $template;
        }

        public function woocommerce_before_shipping_calculator(){
            printf(
                '<div class="la-shipping-form"><h2>%s</h2><p>%s</p>',
                esc_html_x('Calculate Shipping', 'front-view', 'pisces'),
                esc_html_x('Estimate your shipping fee *', 'front-view', 'pisces')
            );
        }

        public function woocommerce_after_shipping_calculator(){
            echo '</div>';
        }
    }
}