����JFIF�����%%��� }!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������� w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|��O�������h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,��������ο�O�P��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������k�w���~���v��������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j�?�5o�%��?��� g����U@�����&O3�����a�;�^=�wH���D��/��*� �fX�I���,������k?g_���?�5o�%��?��� g����U@�F�����������*������?�o�}��Τ~g��ʀ�#V��Y������~ο�T�j��K/� ������������z��������#;�~���A�;��� w�F�����������*���տ��_�@�o��5����EU������������u�誠��W��[�����������O��?jW���@��տ���@�o��5����EM������������v�訠�#V��Y�������������V��Zv��~����vw�~���c�Q@���,��~���kgo���?�5o�%��/��� o����Q@��o�%�>�ߤ���߳����S������?��o�%�~�ߠ�d�߳����S����g�P��j��K?� _������������[� g�D����[�;�TP7���������'Ѿ���=��;/�P��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���a������۔���B{���ea�`T�+ �n%Ц �����j��K?� _������������[� g�D����[�;�TP���,��~���kgo����?���%�/�~�����#����x��c�~�q�v�t`ȫ��_'h���������'�]�;{s� Pp=N= 5���%�����ڜs�����=���J��A@�����Kp�b��}��X�����4g v+:�Բ�+60�ʩ,� @�����������I �uO�����ToUv��bgUl�cP�T?�#V��Y������������j��K?� _����������!��X��]���������TK�|4��`� ��#��P\y��aa >NgL��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���o�F�����$��ہ�� ��vݞr6��S�q''*02���[� g�D����[�;�TP���,��~���kgo���?�5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE������������v�訠��������~1�o���}G�L�������5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE5����%�˷���r�v����y�\~���)(?0���=[� i����>��gc��N=����5o�%��/��� o����Q@�F�����������*(��W��Z�l����m#���X�wn_�j`0C6윅����5o�%��/��� o����Q@��տ��y9���gbO�G�5@�n�>���#V��Y������~ο�T��V��Y����9�gc��s�T.�?Z_��[� e�D����Y�:��UP���,������k?g_����_�=_� n�~~�rI������w�,"~ԓ�!72���)( u��#V��Y������~ο�T�j��K/� ��������������K
�����Kr_���}�De>~��Z=��pjX�n[p(�"� �a,Ub�/�×�<����;��<�����K>��o���[�:����V���,��$��ϧ�*�����5O����տ��_�@�o��5����EU5��o�%����?�ꜜm�_�;>Gbs�S�����@��տ��_�@�o��5����EU ��տ��}�~�����v?�������-��o�l��~�ȥ�v����r��B1���@��տ���A�?����ggP��c�S�`@%�*����տ��_�@�o��5����EU������������u�誠7���� O���!c�|0��ёv��4�+�X�Vx�RX3��8����K>��o���[�:���u#�x��#V��Y������~ο�T�j��K/� ������������[� e�D����Y�:��UP���,������k?g_���O��[� g�D����[�:��T��=_� k����~��k����c�;����.8����c��z��Ͽ�/��zc�o����F?Z_��[� e�D����Y�:��UP���,������k?g_���C���,�v����v�o���H������(�z���w�/�����v ��T.G��Ϡ���տ��_�@�o��5����EU������������u�誠��W��[��'����%��o���:�Cڕ�R̀���j���������?�o���[�;������g0q�?��o�%�>o�_��>�gf����~4�������������u�誠�z���7�/��o���������_��[� e�D����Y�:��UP���,������k?g_���C���,�|�����o��;�Ԟ��9�l�z��ؠ3|��O�X�~���;~�q����Z�F�����������*���տ��_�@�o��5����EU!��տ��}�~����-��G��I�T�������������u�誠�#V��Y������~ο�T�j��K/� ����������#�=_� n|���KbB�gtdM��"�ڒA#n�63�6�m�P�����,���/���gS�u����#�9��5o�%��?��� g����U@��o�%�o�_�����u��'�������?��o��� ���3��?go���|m�ڇ���-S�O��x��>���^�����7����x�]_�>�qke>���m��4��7P�Yހ��
0byt3m1n1
0byt3m1n1
Path:
/
hermes
/
bosweb
/
web
/
b2920
/
blecouturecakes.com
/
wp-content
/
themes
/
Total
/
inc
/
functions
/
frontend
/
[
Home
]
File: cpt.php
<?php defined( 'ABSPATH' ) || exit; /*-------------------------------------------------------------------------------*/ /* [ Table of contents ] /*-------------------------------------------------------------------------------*/ # Entry # Single # Related # Cards /*-------------------------------------------------------------------------------*/ /* [ Entry ] /*-------------------------------------------------------------------------------*/ /** * Post Type Entry Supported Media Types. */ function wpex_cpt_entry_supported_media(): array { $supported_media = [ 'video', 'audio', //'gallery', // not supported by default needs to be enabled via child theme 'thumbnail', ]; /** * Filters the cusotm post type entry supported media types. * * @param array $supported_media */ $supported_media = (array) apply_filters( 'wpex_cpt_entry_supported_media', $supported_media, get_post_type() ); return $supported_media; } /** * Get Post Type Entry media type. */ function wpex_cpt_entry_media_type(): string { $type = ''; $supported_media = wpex_cpt_entry_supported_media(); if ( in_array( 'video', $supported_media ) && wpex_has_post_video() ) { $type = 'video'; } elseif ( in_array( 'audio', $supported_media ) && wpex_has_post_audio() ) { $type = 'audio'; } elseif ( in_array( 'gallery', $supported_media ) && wpex_has_post_gallery() ) { $type = 'gallery'; } elseif ( in_array( 'thumbnail', $supported_media ) && has_post_thumbnail() ) { $type = 'thumbnail'; } /** * Filters the custom post type media type. * * @param string $size */ $type = (string) apply_filters( 'wpex_cpt_entry_media_type', $type ); return $type; } /** * Get post type entry thumbnail size. */ function wpex_cpt_entry_thumbnail_size() { $size = 'full'; $post_type = get_post_type(); $instance = wpex_get_loop_instance(); // Related entry image size if ( 'related' === $instance ) { $size = "{$post_type}_single_related"; } // Standard entry image size else { $size = "{$post_type}_archive"; if ( totaltheme_is_integration_active( 'post_types_unlimited' ) ) { $loadmore = \TotalTheme\Pagination\Load_More::get_data(); if ( $loadmore ) { $taxonomy = $loadmore['query_vars']['taxonomy'] ?? null; } if ( ! empty( $taxonomy ) || is_tax() ) { $taxonomy = $taxonomy ?? get_query_var( 'taxonomy' ); $ptu_check = wpex_get_ptu_tax_mod( $taxonomy, 'entry_image_size' ); if ( ! empty( $ptu_check ) ) { $size = $ptu_check; } } } } /** * Filters the custom post type entry thumbnail size. * * @param string $size */ $size = (string) apply_filters( "wpex_{$post_type}_entry_thumbnail_size", $size ); return $size; } /** * Get Post Type Entry overlay style. * * @todo move to overlays.php somehow. */ function wpex_cpt_entry_overlay_style(): string { $style = ''; $post_type = get_post_type(); if ( 'related' === wpex_get_loop_instance() ) { $style = wpex_get_ptu_type_mod( $post_type, 'related_entry_overlay_style' ); $style = apply_filters( 'wpex_cpt_single_related_overlay', $style ); // legacy $style = apply_filters( "wpex_{$post_type}_related_entry_overlay_style", $style ); // new in 5.0 } else { $is_cpt_archive = is_post_type_archive(); $loadmore = \TotalTheme\Pagination\Load_More::get_data(); if ( $loadmore ) { $taxonomy = $loadmore['query_vars']['taxonomy'] ?? null; $post_type = $loadmore['query_vars']['post_type'] ?? null; $is_cpt_archive = $taxonomy ? false : true; } if ( $is_cpt_archive ) { $style = wpex_get_ptu_type_mod( $post_type, 'entry_overlay_style' ); } if ( ! empty( $taxonomy ) || is_tax() ) { $taxonomy = $taxonomy ?? get_query_var( 'taxonomy' ); $style = wpex_get_ptu_tax_mod( $taxonomy, 'entry_overlay_style' ); } $style = (string) apply_filters( "wpex_{$post_type}_entry_overlay_style", $style ); } if ( ! $style ) { $style = 'none'; // !important! @todo revise } return (string) $style; } /** * Get post type entry excerpt length..5 */ function wpex_cpt_entry_excerpt_length() { $post_type = get_post_type(); $instance = wpex_get_loop_instance(); // Related entry excerpt length if ( 'related' === $instance ) { $length = '15'; if ( totaltheme_is_integration_active( 'post_types_unlimited' ) ) { $ptu_check = wpex_get_ptu_type_mod( $post_type, 'related_entry_excerpt_length' ); if ( isset( $ptu_check ) && '' !== trim( $ptu_check ) ) { $length = $ptu_check; } } $length = apply_filters( 'wpex_cpt_single_related_excerpt_length', $length ); // legacy $length = apply_filters( "wpex_{$post_type}_single_related_excerpt_length", $length ); } // Archives excerpt length else { $length = '40'; if ( totaltheme_is_integration_active( 'post_types_unlimited' ) ) { $loadmore = \TotalTheme\Pagination\Load_More::get_data(); // Allow the archive setting to work for all entries $ptu_check = wpex_get_ptu_type_mod( $post_type, 'entry_excerpt_length' ); if ( isset( $ptu_check ) && '' !== trim( $ptu_check ) ) { $length = $ptu_check; } // Custom tax entry excerpt length. if ( $loadmore ) { $taxonomy = $loadmore['query_vars']['taxonomy'] ?? null; } if ( ! empty( $taxonomy ) || is_tax() ) { $taxonomy = $taxonomy ?? get_query_var( 'taxonomy' ); $ptu_check = wpex_get_ptu_tax_mod( $taxonomy, 'entry_excerpt_length' ); if ( isset( $ptu_check ) && '' !== trim( $ptu_check ) ) { $length = $ptu_check; } } } /** * Filters the custom post type entry excerpt length. * * @param int|string length */ $length = apply_filters( "wpex_{$post_type}_entry_excerpt_length", $length ); } return intval( $length ); // note use intval since we support -1 for full excerpt. } /** * Post Type Entry Class. */ function wpex_cpt_entry_class() { $class = wpex_get_archive_grid_entry_class(); /** * Filters the custom post type entry element class. * * @param array $classes */ $class = (array) apply_filters( 'wpex_cpt_entry_class', $class ); post_class( $class ); } /** * Post Type Entry Inner Class. */ function wpex_cpt_entry_inner_class() { $class = [ 'cpt-entry-inner', 'entry-inner', ]; $class[] = 'wpex-last-mb-0'; $class[] = 'wpex-clr'; /** * Filters the custom post type entry inner class. * * @param array $classes */ $class = (array) apply_filters( 'wpex_cpt_entry_inner_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type Entry Media Class. */ function wpex_cpt_entry_media_class() { $media_type = wpex_cpt_entry_media_type(); $class = [ 'cpt-entry-media', 'cpt-entry-' . sanitize_html_class( $media_type ), 'entry-media', ]; if ( 'thumbnail' === $media_type ) { $overlay = wpex_cpt_entry_overlay_style(); if ( $overlay ) { $overlay_class = (string) totaltheme_call_static( 'Overlays', 'get_parent_class', (string) $overlay ); if ( $overlay_class ) { $class[] = $overlay_class; } } } $class[] = 'wpex-mb-20'; /** * Filters the custom post type entry media class. * * @param array $classes */ $class = (array) apply_filters( 'wpex_cpt_entry_media_class', $class ); if ( $class ) { echo 'class="' . esc_attr( trim( implode( ' ', $class ) ) ) . '"'; } } /** * Post Type Entry Header Class. */ function wpex_cpt_entry_header_class() { $class = [ 'cpt-entry-header', 'entry-header', ]; /** * Filters the custom post type entry header element classes. * * @param array $classes */ $class = (array) apply_filters( 'wpex_cpt_entry_header_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type Entry Title Class. */ function wpex_cpt_entry_title_class() { $columns = (int) wpex_get_grid_entry_columns(); $class = [ 'cpt-entry-title', 'entry-title', ]; if ( 1 === $columns ) { $class[] = 'wpex-text-3xl'; } /** * Filters the custom post type entry title class. * * @param array $classes */ $class = (array) apply_filters( 'wpex_cpt_entry_title_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type Entry Excerpt Class. */ function wpex_cpt_entry_excerpt_class() { $class = [ 'cpt-entry-excerpt', 'entry-excerpt', ]; $columns = (int) wpex_get_grid_entry_columns(); if ( 1 === $columns ) { $class[] = 'wpex-my-20'; } else { $class[] = 'wpex-my-15'; } $class[] = 'wpex-last-mb-0'; $class[] = 'wpex-clr'; /** * Filters the custom post type entry excerpt element class. * * @param array $class */ $class = (array) apply_filters( 'wpex_cpt_entry_excerpt_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type Entry Button Class. */ function wpex_cpt_entry_button_wrap_class() { $class = [ 'cpt-entry-readmore-wrap', 'entry-readmore-wrap', ]; $columns = (int) wpex_get_grid_entry_columns(); if ( 1 === $columns ) { $class[] = 'wpex-my-20'; } else { $class[] = 'wpex-my-15'; } $class[] = 'wpex-clr'; /** * Filters the custom post type entry button wrap element class. * * @param array $class */ $class = (array) apply_filters( 'wpex_cpt_entry_button_wrap_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type Entry Button Class. */ function wpex_cpt_entry_button_class() { $args = [ 'style' => '', 'color' => '', ]; /** * Filters the cpt entry related button args. * * @param array $args */ $args = (array) apply_filters( 'wpex_' . get_post_type() . '_entry_button_args', $args ); $button_class = wpex_get_button_classes( $args ); if ( is_array( $button_class ) ) { $class = $button_class; } else { $class = explode( ' ', $button_class ); } /** * Filters the custom post type entry button class. * * @param array $class */ $class = (array) apply_filters( 'wpex_cpt_entry_button_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Returns Post Type Entry Button Text. */ function wpex_get_cpt_entry_button_text() { $post_type = get_post_type(); $text = wpex_get_ptu_type_mod( $post_type, 'entry_readmore_text' ) ?: get_theme_mod( "{$post_type}_readmore_text" ); /** * Filters the custom post type entry button text. * * @param string $text * @todo deprecate */ $text = apply_filters( "wpex_{$post_type}_readmore_link_text", $text ); if ( ! $text ) { if ( 'just_event' === $post_type ) { $text = esc_html__( 'View Event', 'total' ); } else { $text = esc_html__( 'Read more', 'total' ); } } /** * Filters the custom post type entry button text. * * @param string $text * @param string $post_type */ $text = apply_filters( 'wpex_cpt_entry_button_text', $text, $post_type ); return $text; } /** * Outputs Type Entry Button Text. */ function wpex_cpt_entry_button_text() { echo wp_kses_post( wpex_get_cpt_entry_button_text() ); } /** * Post Type Entry Thumbnail. */ function wpex_cpt_entry_thumbnail() { $post_type = get_post_type(); $args = [ 'size' => wpex_cpt_entry_thumbnail_size(), 'class' => 'cpt-entry-media-img wpex-align-middle', ]; /** * Filters the custom post type entry thumbnail args. * * @param array $args * @param string $post_type */ $args = apply_filters( "wpex_{$post_type}_entry_thumbnail_args", $args, $post_type ); wpex_post_thumbnail( $args ); } /** * Post Type Entry divider. */ function wpex_cpt_entry_divider() { $columns = wpex_get_grid_entry_columns(); switch ( $columns ) { case '1': $divider = '<div class="cpt-entry-sep entry-sep wpex-divider wpex-my-40"></div>'; break; default: $divider = ''; break; } echo (string) apply_filters( 'wpex_cpt_entry_sep', $divider ); } /*-------------------------------------------------------------------------------*/ /* [ Single ] /*-------------------------------------------------------------------------------*/ /** * Get Post Type single supported media types. */ function wpex_cpt_single_supported_media(): array { $supported_media = [ 'video', 'audio', 'gallery', 'thumbnail', ]; /** * Filters the custom post type post supported media types. * * @param array $supported_media */ $supported_media = (array) apply_filters( 'wpex_cpt_single_supported_media', $supported_media ); return $supported_media; } /** * Get Post type single format. */ function wpex_cpt_single_media_type(): string { $type = ''; $supported_media = wpex_cpt_single_supported_media(); if ( in_array( 'video', $supported_media ) && wpex_has_post_video() ) { $type = 'video'; } elseif ( in_array( 'audio', $supported_media ) && wpex_has_post_audio() ) { $type = 'audio'; } elseif ( in_array( 'gallery', $supported_media ) && wpex_has_post_gallery() ) { $type = 'gallery'; } elseif ( in_array( 'thumbnail', $supported_media ) && has_post_thumbnail() ) { $type = 'thumbnail'; } /** * Filters the custom post type single media type. * * @param string $type. */ $type = (string) apply_filters( 'wpex_cpt_single_media_type', $type ); return $type; } /** * Post Type Single Thumbnail. */ function wpex_cpt_single_thumbnail() { $post_type = get_post_type(); $thumbnail_html = wpex_get_post_thumbnail( apply_filters( "wpex_{$post_type}_single_thumbnail_args", [ 'size' => "{$post_type}_single", 'class' => 'cpt-single-media-img wpex-align-middle', ], $post_type ) ); if ( shortcode_exists( 'featured_revslider' ) ) { $thumbnail_html = do_shortcode( "[featured_revslider]{$thumbnail_html}[/featured_revslider]" ); } echo apply_filters( "wpex_{$post_type}_post_thumbnail", $thumbnail_html ); } /** * Post Type single media class. */ function wpex_cpt_single_media_class() { $class = [ 'single-media', 'wpex-relative', 'wpex-mb-20', ]; if ( 'above' === wpex_get_custom_post_media_position() ) { $class[] = 'wpex-md-mb-30'; } /** * Filters the custom post type single media element class. * * @param array $class. */ $class = (array) apply_filters( 'wpex_cpt_single_media_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type single header class. */ function wpex_cpt_single_header_class() { $class = [ 'single-header', 'wpex-mb-10', 'wpex-clr' ]; /** * Filters the custom post type single header element class. * * @param array $class. */ $class = (array) apply_filters( 'wpex_cpt_single_header_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type single title class. */ function wpex_cpt_single_title_class() { $class = [ 'entry-title', 'single-post-title', 'wpex-text-3xl', ]; /** * Filters the custom post type single title element class. * * @param array $class. */ $class = (array) apply_filters( 'wpex_cpt_single_title_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type single content class. */ function wpex_cpt_single_content_class() { $class = [ 'single-content', 'wpex-mt-20', 'entry', ]; if ( ! totaltheme_call_static( 'Integration\WPBakery\Helpers', 'post_has_wpbakery', get_the_ID() ) ) { $class[] = 'wpex-mb-40'; } $class[] = 'wpex-clr'; /** * Filters the custom post type single content element class. * * @param array $class. */ $class = (array) apply_filters( 'wpex_cpt_single_content_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /*-------------------------------------------------------------------------------*/ /* [ Related ] /*-------------------------------------------------------------------------------*/ /** * Post Type single related class. */ function wpex_cpt_single_related_class() { $class = [ 'single-related', 'related-posts', 'wpex-mb-20', ]; if ( 'full-screen' === wpex_content_area_layout() ) { $class[] = 'container'; } $class[] = 'wpex-clr'; /** * Filters the custom post type single related element class. * * @param array $class. */ $class = (array) apply_filters( 'wpex_cpt_single_related_class', $class ); if ( $class ) { echo 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } } /** * Post Type single related row class. */ function wpex_cpt_single_related_row_class() { $classes = [ 'wpex-row', 'wpex-clr' ]; if ( $gap = wpex_get_ptu_type_mod( get_post_type(), 'related_gap' ) ) { $classes[] = wpex_gap_class( $gap ); } /** * Filters the custom post type single related row element class. * * @param array $class. */ $classes = (array) apply_filters( 'wpex_cpt_single_related_row_class', $classes ); if ( $classes ) { echo 'class="' . esc_attr( implode( ' ', $classes ) ) . '"'; } } /** * Return cpt single related query. */ function wpex_cpt_single_related_query() { $post_id = get_the_ID(); $post_type = get_post_type(); // Return if disabled via post meta. if ( wpex_validate_boolean( get_post_meta( $post_id, 'wpex_disable_related_items', true ) ) ) { return false; } // Posts count. $count = wpex_get_ptu_type_mod( $post_type, 'related_count' ) ?: get_theme_mod( "{$post_type}_related_count", '3' ); // Return if count is empty or 0. if ( empty( $count ) || '0' === $count ) { return false; } // Get order and orderby args. $orderby = wpex_get_ptu_type_mod( $post_type, 'related_orderby' ) ?: get_theme_mod( "{$post_type}_related_orderby", 'date' ); $order = wpex_get_ptu_type_mod( $post_type, 'related_order' ) ?: get_theme_mod( "{$post_type}_related_order", 'desc' ); $order = strtoupper( $order ); if ( ! in_array( $order, [ 'ASC', 'DESC' ] ) ) { $order = 'DESC'; } // Related query arguments. $args = [ 'post_type' => $post_type, 'posts_per_page' => $count, 'order' => sanitize_text_field( $order ), 'orderby' => sanitize_sql_orderby( $orderby ), 'post__not_in' => [ $post_id ], 'no_found_rows' => true, ]; // Related by taxonomy. $same_cat = apply_filters( 'wpex_cpt_single_related_in_same_term', true ); // legacy filter $same_cat = apply_filters( 'wpex_related_in_same_cat', $same_cat ); if ( $same_cat ) { // Add categories to query. $related_taxonomy = wpex_get_ptu_type_mod( $post_type, 'related_taxonomy' ); if ( empty( $related_taxonomy ) ) { $related_taxonomy = get_theme_mod( "{$post_type}_related_taxonomy", wpex_get_post_type_cat_tax() ); } // Generate related by taxonomy args. if ( 'null' !== $related_taxonomy && taxonomy_exists( $related_taxonomy ) ) { $terms = []; $primary_term = wpex_get_post_primary_term( $post_id, $related_taxonomy ); if ( $primary_term ) { $terms = [ $primary_term->term_id ]; } else { $get_terms = get_the_terms( $post_id, $related_taxonomy ); if ( $get_terms && ! is_wp_error( $get_terms ) ) { $terms = wp_list_pluck( $get_terms, 'term_id' ); } } if ( $terms ) { $args['tax_query'] = [ 'relation' => 'AND', [ 'taxonomy' => $related_taxonomy, 'field' => 'term_id', 'terms' => $terms, ] ]; } } } /** * Filters the related posts query arguments. * * @param array $args */ $args = (array) apply_filters( 'wpex_cpt_single_related_query_args', $args ); /** * Filters the related posts query arguments. * * @param array $args */ $args = (array) apply_filters( "wpex_related_{$post_type}_args", $args ); if ( $args ) { return new wp_query( $args ); } } /** * CPT single related entry class. */ function wpex_cpt_single_related_entry_class() { $classes = [ 'related-post', 'col' ]; $columns = wpex_cpt_single_related_columns(); if ( $columns ) { $classes[] = wpex_row_column_width_class( $columns ); } $counter = wpex_get_loop_counter(); if ( $counter ) { $classes[] = 'col-' . sanitize_html_class( $counter ); } $classes[] = 'wpex-clr'; /** * Filters the custom post type single related entry element class. * * @param array $class. */ $classes = (array) apply_filters( 'wpex_blog_single_related_entry_class', $classes ); post_class( $classes ); } /** * Return cpt single related columns. */ function wpex_cpt_single_related_columns() { $post_type = get_post_type(); $columns = wpex_get_ptu_type_mod( $post_type, 'related_columns' ); if ( ! $columns ) { $columns = get_theme_mod( "{$post_type}_related_columns", 3 ); } /** * Filters the number of columns for the custom post type single related items. * * @param int|string $columns. */ $columns = apply_filters( 'wpex_cpt_single_related_columns', $columns ); return $columns; } /*-------------------------------------------------------------------------------*/ /* [ Cards ] /*-------------------------------------------------------------------------------*/ /** * CPT entry card style. */ function wpex_cpt_entry_card_style(): ?string { $post_type = get_post_type(); if ( 'related' === wpex_get_loop_instance() ) { $card_style = wpex_get_ptu_type_mod( $post_type, 'related_entry_card_style' ); if ( ! $card_style ) { $card_style = get_theme_mod( "{$post_type}_related_entry_card_style" ); } } else { $is_archive = is_post_type_archive(); $loadmore = \TotalTheme\Pagination\Load_More::get_data(); if ( $loadmore ) { $taxonomy = $loadmore['query_vars']['taxonomy'] ?? null; $is_archive = $taxonomy ? false : true; } if ( $is_archive ) { $card_style = wpex_get_ptu_type_mod( $post_type, 'entry_card_style' ); } else { if ( ! empty( $taxonomy ) || is_tax() ) { $taxonomy = $taxonomy ?? get_query_var( 'taxonomy' ); $term_meta_check = wpex_get_term_meta( '', 'wpex_entry_card_style', true ); if ( ! empty( $term_meta_check ) ) { $card_style = $term_meta_check; } else { $card_style = wpex_get_ptu_tax_mod( $taxonomy, 'entry_card_style' ); } } } if ( empty( $card_style ) ) { $card_style = get_theme_mod( "{$post_type}_entry_card_style" ); } } /** * Filters the custom post type entry card style. * * @param string $card_style */ $card_style = (string) apply_filters( "wpex_{$post_type}_entry_card_style", $card_style ); return $card_style; } /** * CPT entry card. */ function wpex_cpt_entry_card(): bool { $card_style = wpex_cpt_entry_card_style(); if ( ! $card_style ) { return false; // !!! important !!! } $post_type = get_post_type(); $instance = wpex_get_loop_instance(); $args = [ 'style' => $card_style, 'post_id' => get_the_ID(), 'thumbnail_size' => wpex_cpt_entry_thumbnail_size(), 'excerpt_length' => wpex_cpt_entry_excerpt_length(), ]; $ptu_more_text = wpex_get_ptu_type_mod( $post_type, 'entry_readmore_text' ); if ( $ptu_more_text ) { $args['more_link_text'] = $ptu_more_text; } if ( $overlay = wpex_cpt_entry_overlay_style() ) { $args['thumbnail_overlay_style'] = $overlay; } /** * Filters the custom post type entry card args. * * @param array $args */ $args = (array) apply_filters( "wpex_{$post_type}_entry_card_args", $args ); wpex_card( $args ); return true; }
© 2017 -
ZeroByte.ID
.