<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Problem solving &#8211; Κατασκευή Ιστοσελίδων Χανιά &amp; Θεσσαλονίκη</title>
	<atom:link href="https://selidamou.gr/category/problem-solving/feed" rel="self" type="application/rss+xml" />
	<link>https://selidamou.gr</link>
	<description>Web design &#38; Φιλοξενία</description>
	<lastBuildDate>Sun, 22 Nov 2020 12:19:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>woo setup screen not completing</title>
		<link>https://selidamou.gr/problem-solving/woo-setup-screen-not-completing</link>
					<comments>https://selidamou.gr/problem-solving/woo-setup-screen-not-completing#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Sun, 22 Nov 2020 12:19:34 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=4107</guid>

					<description><![CDATA[Μετά από μία εγκατάσταση ή μεταφορά μίας σελίδας, μόλις κάνουμε Login στο wordpress, εμφανίζει συνεχόμενα τo woocommerce setup wizard. Ότι link και να πατήσουμε, συνεχίζει να εμφανίζει την ίδια οθόνη. &#160; Για να λύσετε προσωρινά το πρόβλημα σας, μπορείτε να προσθέσετε&#8230;]]></description>
										<content:encoded><![CDATA[<p>Μετά από μία εγκατάσταση ή μεταφορά μίας σελίδας, μόλις κάνουμε Login στο wordpress, εμφανίζει συνεχόμενα τo <strong>woocommerce setup wizard. </strong>Ότι link και να πατήσουμε, συνεχίζει να εμφανίζει την ίδια οθόνη.</p>
<p><img loading="lazy" class="size-full wp-image-4146 aligncenter" src="https://selidamou.gr/wp-content/uploads/2020/11/Setup-Wizard-initial-page-error.png" alt="" width="779" height="561" srcset="https://selidamou.gr/wp-content/uploads/2020/11/Setup-Wizard-initial-page-error.png 779w, https://selidamou.gr/wp-content/uploads/2020/11/Setup-Wizard-initial-page-error-300x216.png 300w, https://selidamou.gr/wp-content/uploads/2020/11/Setup-Wizard-initial-page-error-768x553.png 768w, https://selidamou.gr/wp-content/uploads/2020/11/Setup-Wizard-initial-page-error-600x432.png 600w" sizes="(max-width: 779px) 100vw, 779px" /></p>
<p>&nbsp;</p>
<p>Για να λύσετε προσωρινά το πρόβλημα σας, μπορείτε να προσθέσετε το παρακάτω κώδικα στο αρχείο functions.php</p>
<pre class="default s-code-block hljs javascript"><code>add_filter(<span class="hljs-string">'woocommerce_enable_setup_wizard'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>()</span>{<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;},<span class="hljs-number">999</span>);</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/woo-setup-screen-not-completing/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Πως να διορθώσετε το μήνυμα &#8220;Parallelize Downloads Across Hostnames&#8221;</title>
		<link>https://selidamou.gr/problem-solving/parallelize-downloads-across-hostnames-message</link>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Sun, 22 Nov 2020 12:15:08 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">http://selidamou.gr/?p=3260</guid>

					<description><![CDATA[Πως να αποφύγετε την ειδοποίηση “Parallelize Downloads Across Hostnames” Βλέποντας το μήνυμα “parallelize downloads across hostnames” στο Pingdom, GTmetrix, or Google PageSpeed Insights? Αυτό συμβαίνει γιατί οι browsers έχουν ένα όριο παράλληλων συνδέσεων. Αυτό οφείλεται κυρίως στην HTTP/1.1, που οι browsers ανοίγουν&#8230;]]></description>
										<content:encoded><![CDATA[<h1 class="heading--huge color--purple mt--40">Πως να αποφύγετε την ειδοποίηση “Parallelize Downloads Across Hostnames”</h1>
<div class="mt--10 text--small opacity--60">Βλέποντας το μήνυμα “parallelize downloads across hostnames” στο <a href="https://tools.pingdom.com" target="_blank" rel="noopener noreferrer">Pingdom</a>, <a href="https://gtmetrix.com/" target="_blank" rel="noopener noreferrer">GTmetrix</a>, or <a href="https://developers.google.com/speed/pagespeed/insights/?hl=el" target="_blank" rel="noopener noreferrer">Google PageSpeed Insights?</a> Αυτό συμβαίνει γιατί οι browsers έχουν ένα όριο παράλληλων συνδέσεων. Αυτό οφείλεται κυρίως στην HTTP/1.1, που οι browsers ανοίγουν κατά μέσο όρο 6 συνδέσεις ανά host.</div>
<div class="user-content mt--40 border--bottom--gray pb--20 mb--20">
<p><img loading="lazy" class="size-full wp-image-6742 aligncenter" src="https://kinsta.com/wp-content/uploads/2016/09/parallelize-downloads-across-hostnames.png" sizes="(max-width: 475px) 100vw, 475px" srcset="https://kinsta.com/wp-content/uploads/2016/09/parallelize-downloads-across-hostnames.png 475w, https://kinsta.com/wp-content/uploads/2016/09/parallelize-downloads-across-hostnames-300x123.png 300w, https://kinsta.com/wp-content/uploads/2016/09/parallelize-downloads-across-hostnames-460x189.png 460w" alt="parallelize downloads across hostnames" width="475" height="195" /></p>
<div class="warning">Σημείωση: Αν τρέχεται σε HTTP/2, αυτή η ειδοποίηση μπορεί να αγνοηθεί. Τελευταία είναι πολύ συχνό οι περισσότεροι Server να υποστηρίζουν την τεχνολογία HTTP/2. Με το HTTP/2 πολλαπλές συνδέσεις μπορούν να φορτωθούν παράλληλα.</div>
<p>Ανάλογα το εργαλείο που κοιτάτε, το μήνυμα μπορεί να είναι διατυπωμένο με διαφορετικούς τρόπους:</p>
<ul>
<li>“parallelize downloads across hostnames”</li>
<li>“increase download parallelization by distributing these requests across multiple hostnames”</li>
</ul>
<p><img loading="lazy" class="alignnone size-full wp-image-6740" src="https://kinsta.com/wp-content/uploads/2016/09/pingdom-parallelize-downloads-across-hostnames.png" sizes="(max-width: 1682px) 100vw, 1682px" srcset="https://kinsta.com/wp-content/uploads/2016/09/pingdom-parallelize-downloads-across-hostnames.png 1682w, https://kinsta.com/wp-content/uploads/2016/09/pingdom-parallelize-downloads-across-hostnames-300x95.png 300w, https://kinsta.com/wp-content/uploads/2016/09/pingdom-parallelize-downloads-across-hostnames-768x244.png 768w, https://kinsta.com/wp-content/uploads/2016/09/pingdom-parallelize-downloads-across-hostnames-1024x326.png 1024w, https://kinsta.com/wp-content/uploads/2016/09/pingdom-parallelize-downloads-across-hostnames-460x146.png 460w" alt="pingdom parallelize downloads across hostnames" width="1682" height="535" /></p>
<p>Αν τρέχετε την σελίδα σας ακόμα σε HTTP και δεν έχετε περάσει στο HTTP/2, μπορείτε να ακολουθήσετε το παρακάτω tutorial.</p>
<h2>Διορθώστε την ειδοποίηση “Parallelize Downloads Across Hostnames”</h2>
<p>Ένας τρόπος είναι να μοιράσετε το περιεχόμενο από περισότερα subdomain (γνωστό ως Domain sharding). Με αυτή τη μέθοδο μπορείτε να φορτώσετε τη σελίδα cookie-free, αλλά προσθέτετε μία καθυστέρηση όσο αφορά τα DNS requests.</p>
<h3>1. Δημιουργήστε τα επιπλέον Subdomains</h3>
<p>Πρώτα πρέπει να δημιουργήσετε τα subdomains από το περιβάλλον του server σας (cpanel, plesk κ.ο.κ.).</p>
<pre><code class="php">selidamou.gr
static1.selidamou.gr
static2.selidamou.gr
static3.selidamou.gr</code></pre>
<h3>2. Αλλαγή του WordPress Config</h3>
<p>Έπειτα πρέπει να αλλάξετε το wpconfig, ώστε δώσετε την δυνατότητα πολλαπλών συνδέσεων στα subdomain. Απλά προσθέστε το παρακάτω κώδικα στο functions.php αρχείο (src: <a href="https://gist.github.com/leowebguy/dab3e498e68917fb2938" target="_blank" rel="noopener noreferrer">GitHub</a>). Αντικαταστήστε τις τιμές στο $subdomains με τα δικά σας subdomains. Όλα τα subdomains/hostnames πρέπει να έχουν την ίδια δομή.</p>
<pre class=" language-php"><code class=" language-php"><span class="token keyword">function</span> <span class="token function">parallelize_hostnames</span><span class="token punctuation">(</span><span class="token variable">$url</span><span class="token punctuation">,</span> <span class="token variable">$id</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
 <span class="token variable">$hostname</span> <span class="token operator">=</span> <span class="token function">par_get_hostname</span><span class="token punctuation">(</span><span class="token variable">$url</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//call supplemental function</span>
 <span class="token variable">$url</span> <span class="token operator">=</span> <span class="token function">str_replace</span><span class="token punctuation">(</span><span class="token function">parse_url</span><span class="token punctuation">(</span><span class="token function">get_bloginfo</span><span class="token punctuation">(</span><span class="token string">'url'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token constant">PHP_URL_HOST</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$hostname</span><span class="token punctuation">,</span> <span class="token variable">$url</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
 <span class="token keyword">return</span> <span class="token variable">$url</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">function</span> <span class="token function">par_get_hostname</span><span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
 <span class="token variable">$subdomains</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string">'media1.mydomain.com'</span><span class="token punctuation">,</span><span class="token string">'media2.mydomain.com'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//add your subdomains here, as many as you want.</span>
 <span class="token variable">$host</span> <span class="token operator">=</span> <span class="token function">abs</span><span class="token punctuation">(</span><span class="token function">crc32</span><span class="token punctuation">(</span><span class="token function">basename</span><span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">%</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token variable">$subdomains</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
 <span class="token variable">$hostname</span> <span class="token operator">=</span> <span class="token variable">$subdomains</span><span class="token punctuation">[</span><span class="token variable">$host</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
 <span class="token keyword">return</span> <span class="token variable">$hostname</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token function">add_filter</span><span class="token punctuation">(</span><span class="token string">'wp_get_attachment_url'</span><span class="token punctuation">,</span> <span class="token string">'parallelize_hostnames'</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
<p>&nbsp;</p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress hooks</title>
		<link>https://selidamou.gr/problem-solving/wordpress-hooks</link>
					<comments>https://selidamou.gr/problem-solving/wordpress-hooks#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Sun, 22 Nov 2020 11:43:28 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[frinend]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=4142</guid>

					<description><![CDATA[Μία λίστα με τη σειρά εκτέλεσης των hooks στο front end του wordpress. Μπορεί να σας βοηθήσει στην προσπάθεια σας να καλέσετε κάποια hooks διαδοχικά. Προσωπικά μου ήταν πολύ χρήσιμο όταν προσπάθησα να βάλω ένα cookie για την linkwise και&#8230;]]></description>
										<content:encoded><![CDATA[<p>Μία λίστα με τη σειρά εκτέλεσης των hooks στο front end του wordpress. Μπορεί να σας βοηθήσει στην προσπάθεια σας να καλέσετε κάποια hooks διαδοχικά. Προσωπικά μου ήταν πολύ χρήσιμο όταν προσπάθησα να βάλω ένα cookie για την linkwise και σε δεύτερη φάση να τσεκάρω αν υπάρχει το cookie και να ορίσω κάποια divs που ήθελα να κρύψω με CSS.</p>
<p>Να μην ξεχνάμε ότι πάντα παίζει ρόλο και το priority που θα ορίσουμε στο hook.</p>
<ol>
<li>mu_plugin_loaded</li>
<li>network_plugin_loaded</li>
<li>muplugins_loaded</li>
<li>registered_taxonomy</li>
<li>registered_post_type</li>
<li>plugin_loaded</li>
<li>plugins_loaded</li>
<li>sanitize_comment_cookies</li>
<li>setup_theme</li>
<li>load_textdomain</li>
<li><strong>after_setup_theme</strong> <em>// The earliest for a theme; user is not authorised, pugins are not initialized</em></li>
<li>auth_cookie_malformed</li>
<li>auth_cookie_valid</li>
<li><strong>set_current_user</strong> <em>// Triggered by kses, user is set</em></li>
<li><strong>init</strong> <em>// The most common and popular hook for plugins. Here you can get and process request vars if needed. All globals are set, as well as user &amp; taxonomies, but <strong>no headers sent still</strong> to client</em></li>
<li>widgets_init</li>
<li>register_sidebar</li>
<li>wp_register_sidebar_widget</li>
<li><strong>wp_default_scripts</strong> // Provides access to WP_Scripts object</li>
<li>wp_default_styles</li>
<li>admin_bar_init</li>
<li>add_admin_bar_menus</li>
<li><strong>wp_loaded</strong> <em>// Almost the same state as <strong>init</strong>, check docs for differences</em></li>
<li><strong>parse_request</strong></li>
<li><strong>send_headers</strong> <em>// That’s just where output starts technically</em></li>
<li><strong>parse_query</strong> <em>// Main query object is ready, you can check its parmeters</em></li>
<li>pre_get_posts</li>
<li>posts_clauses</li>
<li>posts_selection</li>
<li><strong>wp</strong> <strong>// The most suitable place to edit main query before it executes</strong></li>
<li><strong>template_redirect</strong> // <strong>The most suitable place to redirect. No content displayed still</strong></li>
<li><strong>get_header</strong> <em>// before displaying header.php</em></li>
<li><strong>wp_head</strong> <em>// insecure third-party output starts just here</em></li>
<li>wp_enqueue_scripts</li>
<li>wp_print_styles</li>
<li>wp_print_scripts</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/wordpress-hooks/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Qtranslate and php 7.1 error</title>
		<link>https://selidamou.gr/problem-solving/qtranslate-php-7-1-error</link>
					<comments>https://selidamou.gr/problem-solving/qtranslate-php-7-1-error#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Sat, 09 Mar 2019 16:49:10 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=3663</guid>

					<description><![CDATA[Το Qtranslate είναι ένα project που δεν ανανεώνεται πλέον από τους δημιουργούς του. Με την php 7.1 ενεργή εμφανίζεται το παρακάτω error. Warning: Parameter 2 to qtranxf_postsFilter() expected to be a reference, value given in /var/www/DOMAIN/htdocs/wordpress/wp-includes/class-wp-hook.php on line 298 &#160;&#8230;]]></description>
										<content:encoded><![CDATA[<p>Το Qtranslate είναι ένα project που δεν ανανεώνεται πλέον από τους δημιουργούς του. Με την php 7.1 ενεργή εμφανίζεται το παρακάτω error.</p>
<pre>Warning: Parameter 2 to qtranxf_postsFilter() expected to be a reference, value given in /var/www/DOMAIN/htdocs/wordpress/wp-includes/class-wp-hook.php on line 298</pre>
<p>&nbsp;</p>
<p>Τι γίνεται όμως με τις σελίδες που ήδη χρησιμοποιείται και δεν χρειάζεται να γίνει κάποια αλλαγή. Πρέπει να αλλάξετε χειροκίνητα τα παρακάτω αρχεία.</p>
<p>&nbsp;</p>
<p>Στο αρχείο qtranslate-x/qtranslate_frontend.php</p>
<p>Σειρά 523 από</p>
<pre>function qtranxf_postsFilter($posts,&amp;$query) {//WP_Query</pre>
<p>σε</p>
<pre>function qtranxf_postsFilter($posts,$query) {//WP_Query</pre>
<p>και στη σειρά 597 από</p>
<pre>function qtranxf_excludeUntranslatedPosts($where,&amp;$query) {//WP_Query</pre>
<p>σε</p>
<pre>function qtranxf_excludeUntranslatedPosts($where,$query) {//WP_Query</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/qtranslate-php-7-1-error/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Filter by product TAGS and not search by product TAG</title>
		<link>https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag</link>
					<comments>https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Mon, 18 Feb 2019 12:59:53 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=3642</guid>

					<description><![CDATA[Ας μπούμε κατευθείαν στο θέμα, όπως συνήθως κάνω στα τεχνικά άρθρα για το wordpress. Το πρόβλημα που έπρεπε να λυθεί εδώ ήταν να βρεθεί ένας εύκολος τρόπος για τον Administrator του woocommerce, να μπορεί να κάνει αναζήτηση ή με κάποιο&#8230;]]></description>
										<content:encoded><![CDATA[<p>Ας μπούμε κατευθείαν στο θέμα, όπως συνήθως κάνω στα τεχνικά άρθρα για το wordpress. Το πρόβλημα που έπρεπε να λυθεί εδώ ήταν να βρεθεί ένας εύκολος τρόπος για τον Administrator του woocommerce, να μπορεί να κάνει αναζήτηση ή με κάποιο τρόπο να βρει ένα προϊόν σύμφωνα με την ετικέτα του. Σε ένα πελάτη μου στην ετικέτα του προϊόντος, περνούσε ο προμηθευτής και είναι χρήσιμο στη τιμολογιακή πολιτική να μπορείς να κάνεις αναζήτηση για έναν προμηθευτή.</p>
<p>&nbsp;</p>
<p>Μετά από αρκετή έρευνα και δοκιμές στη εγκατάσταση woocommerce που είχε ο πελάτης δεν έπαιρνε την προσθήκη του TAG στην αναζήτηση προϊόντων μέσα από το is_search() function, οπότε έπρεπε να βρεθεί διαφορετικός τρόπος προσέγγισης. Η επιλογή που έκανα ήταν να προσθέσω ένα filter με τα TAGS/προμηθευτές, παρόμοιο με το filter που υπάρχει ήδη στο woo με τις κατηγορίες. Το παραπάνω μπορεί να γίνει με δύο διαφορετικούς τρόπους. Μετά από δοκιμές κατέληξα ότι ο δεύτερος είναι ελάχιστα ταχύτερος.</p>
<p>πρώτος τρόπος προθήκης φίλτρου με την οντότητα TAG (filter by product TAGS)</p>
<pre>/**
* @snippet Show Custom Filter @ WooCommerce Products Admin
* @sourcecode <a href="https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag">https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag</a>
* @author Vasilis kartsios
* @compatible Woo 3.5.3
*/

add_action('restrict_manage_posts', 'product_tags_sorting');
function product_tags_sorting() {
global $typenow;

$taxonomy = 'product_tag';

if ( $typenow == 'product' ) {


$selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
$info_taxonomy = get_taxonomy($taxonomy);

wp_dropdown_categories(array(
'show_option_all' =&gt; __("Αναζήτηση με προμηθευτή2"),
'taxonomy' =&gt; $taxonomy,
'name' =&gt; $taxonomy,
'orderby' =&gt; 'name',
'selected' =&gt; $selected,
'show_count' =&gt; true,
'hide_empty' =&gt; true,
));
};
}

add_action('parse_query', 'product_tags_sorting_query');
function product_tags_sorting_query($query) {
global $pagenow;

$taxonomy = 'product_tag';

$q_vars = &amp;$query-&gt;query_vars;
if ( $pagenow == 'edit.php' &amp;&amp; isset($q_vars['post_type']) &amp;&amp; $q_vars['post_type'] == 'product' &amp;&amp; isset($q_vars[$taxonomy]) &amp;&amp; is_numeric($q_vars[$taxonomy]) &amp;&amp; $q_vars[$taxonomy] != 0 ) {
$term = get_term_by('id', $q_vars[$taxonomy], $taxonomy);
$q_vars[$taxonomy] = $term-&gt;slug;
}
}</pre>
<p>δεύτερος τρόπος προθήκης φίλτρου με την οντότητα TAG (filter by product TAGS)</p>
<pre>/**
* @snippet Show Custom Filter @ WooCommerce Products Admin
* @sourcecode <a href="https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag">https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag</a>
* @author Vasilis kartsios
* @compatible Woo 3.5.3
*/

add_filter( 'woocommerce_product_filters', 'bbloomer_filter_by_custom_taxonomy_dashboard_products' );

function bbloomer_filter_by_custom_taxonomy_dashboard_products( $output ) {

global $wp_query;

$output .= wc_product_dropdown_categories( array(
'show_option_none' =&gt; 'Αναζήτηση με προμηθευτή',
'taxonomy' =&gt; 'product_tag',
'name' =&gt; 'product_tag',
'selected' =&gt; isset( $wp_query-&gt;query_vars['product_tag'] ) ? $wp_query-&gt;query_vars['product_tag'] : '',
) );

return $output;
}</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/filter-by-product-tags-and-not-search-by-product-tag/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Πως βρίσκω από ποιο Plugin προέρχεται το conflict</title>
		<link>https://selidamou.gr/problem-solving/%cf%80%cf%89%cf%82-%ce%b2%cf%81%ce%af%cf%83%ce%ba%cf%89-%ce%b1%cf%80%cf%8c-%cf%80%ce%bf%ce%b9%ce%bf-plugin-%cf%80%cf%81%ce%bf%ce%ad%cf%81%cf%87%ce%b5%cf%84%ce%b1%ce%b9-%cf%84%ce%bf-conflict</link>
					<comments>https://selidamou.gr/problem-solving/%cf%80%cf%89%cf%82-%ce%b2%cf%81%ce%af%cf%83%ce%ba%cf%89-%ce%b1%cf%80%cf%8c-%cf%80%ce%bf%ce%b9%ce%bf-plugin-%cf%80%cf%81%ce%bf%ce%ad%cf%81%cf%87%ce%b5%cf%84%ce%b1%ce%b9-%cf%84%ce%bf-conflict#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Wed, 06 Feb 2019 13:41:26 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=3603</guid>

					<description><![CDATA[Η αλλιώς τι ακριβώς έχει πάθει η ιστοσελίδα μου και δεν δουλεύει! Σε πολλές περιπτώσεις κάνετε μία εγκατάσταση κάτι καινούριο και ξαφνικά χαλάει η λειτουργικότητα σε κάτι άλλο. Καλώς ήρθατε στον κόσμο μου! Αυτό είναι ένα conflict. Μία παρενέργεια δηλαδή&#8230;]]></description>
										<content:encoded><![CDATA[<p><strong>Η αλλιώς τι ακριβώς έχει πάθει η ιστοσελίδα μου και δεν δουλεύει!</strong></p>
<p>Σε πολλές περιπτώσεις κάνετε μία εγκατάσταση κάτι καινούριο και ξαφνικά χαλάει η λειτουργικότητα σε κάτι άλλο. Καλώς ήρθατε στον κόσμο μου! Αυτό είναι ένα conflict. Μία παρενέργεια δηλαδή από την εγκατάσταση που κάνατε και δημιούργησε ένα πρόβλημα σε κάτι άλλο.<br />
Πρώτα από όλα βεβαιώνουμε ότι έχουμε τις τελευταίες εκδόσεις από τα Plugin, themes και wordpress, γιατί αυτό το bug, μπορεί ήδη να έχει απευθυνθεί και λυθεί σε κάποια νεότερη έκδοση.</p>
<p>Αυτό που πρέπει να κάνουμε είναι αρχικά να απενεργοποιήσουμε όλα τα plugin εκτός από αυτό που δεν δουλεύει μετά την αλλαγή. Αυτό το plugin μπορεί να είναι το woocommerce, μπορεί να είναι κάποιο slider, ίσως τα Advanced custom fields (ACF) ή οποιοδήποτε άλλο.</p>
<p>Σε δεύτερη φάση πρέπει να αρχίσουμε να ενεργοποιούμε τα plugin και να ελέγχουμε μετά από κάθε ενεργοποίηση αν ακόμα λειτουργεί το plugin μας. Με αυτό το τρόπο μπορούμε να δούμε αν προέρχεται η βλάβη από κάποιο Plugin.</p>
<p>Φυσικά η βλάβη μπορεί να προέρχεται από το theme που χρησιμοποιούμε. Για να το ελέγξουμε αυτό, γυρνάμε στο κλασσικό default theme του wordpress twenty nineteen τη στιγμή που γράφω αυτό το άρθρο και βλέπουμε αν ακόμα παρουσιάζεται το πρόβλημα. Αν  καταλήξουμε και βρούμε ποιο plugin ή theme δημιουργούσε το πρόβλημα, μπορούμε να αποφασίσουμε είτε να το αλλάξουμε, είτε να λύσουμε το πρόβλημα. Αν είστε άνετος με τον κώδικα, μπορείτε να δείτε το παρακάτω άρθρο που δίνει μια <a href="https://selidamou.gr/problem-solving/%cf%85%cf%80%ce%ac%cf%81%cf%87%ce%b5%ce%b9-conflict-%ce%bc%ce%b5-%ce%ba%ce%ac%cf%80%ce%bf%ce%b9%ce%bf-javascript-js-%ce%b1%cf%81%cf%87%ce%b5%ce%af%ce%bf">λύση σε περίπτωση που βρεθεί conflict στο wordpress.</a></p>
<p><a href="https://selidamou.gr/problem-solving/%cf%85%cf%80%ce%ac%cf%81%cf%87%ce%b5%ce%b9-conflict-%ce%bc%ce%b5-%ce%ba%ce%ac%cf%80%ce%bf%ce%b9%ce%bf-javascript-js-%ce%b1%cf%81%cf%87%ce%b5%ce%af%ce%bf">Υπάρχει conflict με κάποιο javascript (js) αρχείο</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/%cf%80%cf%89%cf%82-%ce%b2%cf%81%ce%af%cf%83%ce%ba%cf%89-%ce%b1%cf%80%cf%8c-%cf%80%ce%bf%ce%b9%ce%bf-plugin-%cf%80%cf%81%ce%bf%ce%ad%cf%81%cf%87%ce%b5%cf%84%ce%b1%ce%b9-%cf%84%ce%bf-conflict/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Υπάρχει conflict με κάποιο javascript (js) αρχείο</title>
		<link>https://selidamou.gr/problem-solving/%cf%85%cf%80%ce%ac%cf%81%cf%87%ce%b5%ce%b9-conflict-%ce%bc%ce%b5-%ce%ba%ce%ac%cf%80%ce%bf%ce%b9%ce%bf-javascript-js-%ce%b1%cf%81%cf%87%ce%b5%ce%af%ce%bf</link>
					<comments>https://selidamou.gr/problem-solving/%cf%85%cf%80%ce%ac%cf%81%cf%87%ce%b5%ce%b9-conflict-%ce%bc%ce%b5-%ce%ba%ce%ac%cf%80%ce%bf%ce%b9%ce%bf-javascript-js-%ce%b1%cf%81%cf%87%ce%b5%ce%af%ce%bf#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Wed, 06 Feb 2019 13:15:50 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=3598</guid>

					<description><![CDATA[Συχνά πυκνά, όταν κάνουμε μια εγκατάσταση ένα νέο Plugin ή έστω αναπτύσσουμε  εμείς κάποιο Plugin ή γράφουμε κάποιο sctipt (you get the idea), δημιουργείται κάποιο conflict με κάποιο αρχείο. Συνήθως αυτό το αρχείο είναι κάποιο js file. Πρόσφατα είχε ένα&#8230;]]></description>
										<content:encoded><![CDATA[<p>Συχνά πυκνά, όταν κάνουμε μια εγκατάσταση ένα νέο Plugin ή έστω αναπτύσσουμε  εμείς κάποιο Plugin ή γράφουμε κάποιο sctipt (you get the idea), δημιουργείται κάποιο conflict με κάποιο αρχείο. Συνήθως αυτό το αρχείο είναι κάποιο js file.</p>
<p>Πρόσφατα είχε ένα παρόμοιο περιστατικό με ένα plugin που ανέπτυξα και χρησιμοποιούσε το date field picker. Έκανε conflict με ένα αγορασμένο Plugin, και δεν λειτουργούσε όπως έπρεπε. Πρώτα φυσικά πρέπει να σκεφτείτε και να ψάξετε προσεκτικά <a href="https://selidamou.gr/problem-solving/%CF%80%CF%89%CF%82-%CE%B2%CF%81%CE%AF%CF%83%CE%BA%CF%89-%CE%B1%CF%80%CF%8C-%CF%80%CE%BF%CE%B9%CE%BF-plugin-%CF%80%CF%81%CE%BF%CE%AD%CF%81%CF%87%CE%B5%CF%84%CE%B1%CE%B9-%CF%84%CE%BF-conflict">από ποιο Plugin, προέρχεται το conflict</a>. Σε δεύτερη φάση να βρείτε ποιο αρχείο χρησιμοποιεί το συγκεκριμένο js file και σε ποιο σημείο γίνεται enqueue. Το πρόβλημα μου ήταν μεταξύ του <strong>woocomerce category discount pro</strong> &amp; custom <strong>ACF Pro</strong> που περιείχε το πεδίο<strong> datetime picker</strong>.</p>
<p>&nbsp;</p>
<p>Στην δική μου περίπτωση το conflict συνέβαινε στο backend του wordpress. Ο κώδικας στο plugin που μου έκανε conflict αρχικά ήταν:</p>
<pre> wp_register_script( 'date-picker-js', plugin_dir_url( __FILE__ ) . 'assets/js/jquery.datetimepicker.min.js', array('jquery'), false, '1.0.0' );
 wp_enqueue_script( 'date-picker-js' );</pre>
<p>&nbsp;</p>
<p>Το παραπάνω enqueue βρισκόταν μέσα σε ένα function <strong>load_custom_wp_admin_style. </strong>Το αφαίρεσα από το συγκεκριμένο function και το έβαλα σε ένα δικό του, ώστε να φορτώνει μόνο στη σελίδα του backend όταν χρειάζεται. Με αυτό το τρόπο, το datetime field picker δούλευε όταν το Plugin μου χρειαζόταν γιατί δεν το είχε φορτώσει, και όταν πήγαινε ο διαχειριστής στην σελίδα του προβληματικού Plugin, φόρτωνε κανονικά τo js file, ώστε να δουλεύει και αυτό κανονικά (makes any sense?).</p>
<p>Το Hook το βρίσκουμε εύκολα αν δούμε το source από το admin page μέσα στο Plugin..</p>
<pre>&lt;script type="text/javascript"&gt;
addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
var ajaxurl = '/wp-admin/admin-ajax.php',
pagenow = 'woocommerce_page_wpcd-category-discount-pro',
typenow = '',
adminpage = 'woocommerce_page_wpcd-category-discount-pro',
thousandsSeparator = '.',
decimalPoint = ',',
isRtl = 0;
&lt;/script&gt;</pre>
<p>Το function που πρόσθεσα μαζί με το action για να το φορτώσω.</p>
<pre>function v_load_custom_wp_admin_style($hook) {
// Load only on ?page=zen-leads-menu
if($hook != 'woocommerce_page_wpcd-category-discount-pro') {
return;
}
wp_register_script( 'date-picker-js', plugin_dir_url( __FILE__ ) . 'assets/js/jquery.datetimepicker.min.js', array('jquery'), false, '1.0.0' );
wp_enqueue_script( 'date-picker-js' );

}
add_action( 'admin_enqueue_scripts', 'v_load_custom_wp_admin_style' );



</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/%cf%85%cf%80%ce%ac%cf%81%cf%87%ce%b5%ce%b9-conflict-%ce%bc%ce%b5-%ce%ba%ce%ac%cf%80%ce%bf%ce%b9%ce%bf-javascript-js-%ce%b1%cf%81%cf%87%ce%b5%ce%af%ce%bf/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Πως να κάνετε var_dump μέσα στο wp-config (wordpress)</title>
		<link>https://selidamou.gr/problem-solving/%cf%80%cf%89%cf%82-%ce%bd%ce%b1-%ce%ba%ce%ac%ce%bd%ce%b5%cf%84%ce%b5-vardump-wp-config-wordpress</link>
					<comments>https://selidamou.gr/problem-solving/%cf%80%cf%89%cf%82-%ce%bd%ce%b1-%ce%ba%ce%ac%ce%bd%ce%b5%cf%84%ce%b5-vardump-wp-config-wordpress#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Wed, 29 Aug 2018 18:18:31 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=3509</guid>

					<description><![CDATA[Με το παρακάτω function μπορείτε να κολλήσετε το αποτέλεσμα από το var_dump στο τέλος του body . Σε περιπτώσεις που χρειάζεστε να δείτε κάποια μεταβλητή  κατά την διάρκεια debug. &#160; function custom_dump($anything){ add_action('shutdown', function () use ($anything) { echo "&#60;div&#8230;]]></description>
										<content:encoded><![CDATA[<p>Με το παρακάτω function μπορείτε να κολλήσετε το αποτέλεσμα από το var_dump στο τέλος του body .<br />
Σε περιπτώσεις που χρειάζεστε να δείτε κάποια μεταβλητή  κατά την διάρκεια debug.</p>
<p>&nbsp;</p>
<pre class="lang-php prettyprint prettyprinted"><code><span class="kwd">function</span><span class="pln"> custom_dump</span><span class="pun">(</span><span class="pln">$anything</span><span class="pun">){</span><span class="pln">
  add_action</span><span class="pun">(</span><span class="str">'shutdown'</span><span class="pun">,</span> <span class="kwd">function</span> <span class="pun">()</span> <span class="kwd">use</span> <span class="pun">(</span><span class="pln">$anything</span><span class="pun">)</span> <span class="pun">{</span><span class="pln">
    echo </span><span class="str">"&lt;div style='position: absolute; z-index: 100; left: 30px; bottom: 30px; right: 30px; background-color: white;'&gt;"</span><span class="pun">;</span><span class="pln">
    var_dump</span><span class="pun">(</span><span class="pln">$anything</span><span class="pun">);</span><span class="pln">
    echo </span><span class="str">"&lt;/div&gt;"</span><span class="pun">;</span>
  <span class="pun">});</span>
<span class="pun">}</span></code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/%cf%80%cf%89%cf%82-%ce%bd%ce%b1-%ce%ba%ce%ac%ce%bd%ce%b5%cf%84%ce%b5-vardump-wp-config-wordpress/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Το Datepicker επιστρέφει uncaught typeError: undefined &#8216;currentDay&#8217;</title>
		<link>https://selidamou.gr/problem-solving/%cf%84%ce%bf-datepicker-%ce%b5%cf%80%ce%b9%cf%83%cf%84%cf%81%ce%ad%cf%86%ce%b5%ce%b9-uncaught-typeerror-undefined-currentday</link>
					<comments>https://selidamou.gr/problem-solving/%cf%84%ce%bf-datepicker-%ce%b5%cf%80%ce%b9%cf%83%cf%84%cf%81%ce%ad%cf%86%ce%b5%ce%b9-uncaught-typeerror-undefined-currentday#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Tue, 07 Aug 2018 13:10:27 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=3456</guid>

					<description><![CDATA[Το Datepicker επιστρέφει uncaught typeError: undefined &#8216;currentDay&#8217;?? Αν και το συγκεκριμένο πρόβλημα δεν είναι άξιο δικής του σελίδας, πάντα μπορεί να δημιουργηθεί ένα πρόβλημα και να ψάχνει κάποιος τη λύση του. Σας περιγράφω παρακάτω το context του όλου προβλήματος, πως&#8230;]]></description>
										<content:encoded><![CDATA[<p>Το Datepicker επιστρέφει uncaught typeError: undefined &#8216;currentDay&#8217;?? Αν και το συγκεκριμένο πρόβλημα δεν είναι άξιο δικής του σελίδας, πάντα μπορεί να δημιουργηθεί ένα πρόβλημα και να ψάχνει κάποιος τη λύση του. Σας περιγράφω παρακάτω το context του όλου προβλήματος, πως δημιουργήθηκε και ποια ήταν η λύση του.</p>
<p>Πάνω στο development που έκανα για μία σελίδα, ξαφνικά δεν δούλευε το datepicker μέσα στο contact form 7. Στο console panel επέστρεφε &#8220;<strong>uncaught typeError: undefined &#8216;currentDay&#8217;</strong>&#8221;</p>
<p>Εν ολίγης το datepicker ήταν μέσα σε ένα div, το οποίο επαναλαμβανόταν μέσα στη φόρμα και το javascript διάλεγε το πρώτο div id που έβρισκε. Μόλις άλλαξα το id του datepicker σε κάτι μοναδικό το πρόβλημα λύθηκε.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/%cf%84%ce%bf-datepicker-%ce%b5%cf%80%ce%b9%cf%83%cf%84%cf%81%ce%ad%cf%86%ce%b5%ce%b9-uncaught-typeerror-undefined-currentday/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>wpbakery και portrait mode σε tablet 1/4-&gt; 1/2</title>
		<link>https://selidamou.gr/problem-solving/wpbakery-%ce%ba%ce%b1%ce%b9-portrait-mode-%cf%83%ce%b5-tablet-1-4-1-2</link>
					<comments>https://selidamou.gr/problem-solving/wpbakery-%ce%ba%ce%b1%ce%b9-portrait-mode-%cf%83%ce%b5-tablet-1-4-1-2#comments_reply</comments>
		
		<dc:creator><![CDATA[Web-Design]]></dc:creator>
		<pubDate>Sun, 05 Aug 2018 19:23:53 +0000</pubDate>
				<category><![CDATA[Problem solving]]></category>
		<guid isPermaLink="false">https://selidamou.gr/?p=3451</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="vc_row wpb_row vc_row-fluid"><div class="wpb_column vc_column_container vc_col-sm-8"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element " >
		<div class="wpb_wrapper">
			<p>Αυτό το Post μας αφορά το wpbakery και την διάταξη των στηλών και των γραμμών σε ένα tablet στο portrait mode.<br />
Αν πάτε στο responsive options σε μία στήλη θα δείτε ότι στη θέση του tablet portrait mode γράφει &#8220;default value from width attribute&#8221;</p>

		</div>
	</div>
</div></div></div><div class="wpb_column vc_column_container vc_col-sm-4"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div  class="wpb_single_image wpb_content_element vc_align_  wpex-lightbox">
		
		<figure class="wpb_wrapper vc_figure">
			<a href="https://selidamou.gr/wp-content/uploads/2018/08/wpbakery-columns-responsive.jpg" target="_self" class="vc_single_image-wrapper   vc_box_border_grey"><img width="298" height="300" src="https://selidamou.gr/wp-content/uploads/2018/08/wpbakery-columns-responsive-298x300.jpg" class="vc_single_image-img attachment-medium" alt="" loading="lazy" srcset="https://selidamou.gr/wp-content/uploads/2018/08/wpbakery-columns-responsive-298x300.jpg 298w, https://selidamou.gr/wp-content/uploads/2018/08/wpbakery-columns-responsive-150x150.jpg 150w, https://selidamou.gr/wp-content/uploads/2018/08/wpbakery-columns-responsive-600x603.jpg 600w, https://selidamou.gr/wp-content/uploads/2018/08/wpbakery-columns-responsive-100x100.jpg 100w, https://selidamou.gr/wp-content/uploads/2018/08/wpbakery-columns-responsive-125x125.jpg 125w, https://selidamou.gr/wp-content/uploads/2018/08/wpbakery-columns-responsive.jpg 712w" sizes="(max-width: 298px) 100vw, 298px" /></a>
		</figure>
	</div>
</div></div></div></div><div class="vc_row wpb_row vc_row-fluid"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element " >
		<div class="wpb_wrapper">
			<p>Στην δική μου περίπτωση είχα ένα τετράστηλο στο builder το οποίο ήθελα να γίνει δίστηλο στο κινητό και στο tablet.</p>
<p>Οπότε στην μεγάλη οθόνη έχουμε: 3 columns 1/4</p>
<p>Στο tablet landscape έχουμε: 6 columns 1/2</p>
<p>Τέλος στο mobile view έχουμε: 12 columns 1/1</p>
<p>Στο tablet portrait mode ιδεατά θα ήθελα να έχω ότι και στο landscape. 6 columns 1/2 αλλά το wpbakery αποφάσισε ότι πρέπει να χρησιμοποιήσω ότι και στο desktop size. 3 columns 1/4</p>
<p>&nbsp;</p>
<p>Για να κάνουμε ένα απλό override λοιπόν πρέπει να μπούμε στο custom css μας και να βάλουμε το ακόλουθο</p>
<p>@media (min-width: 768px) and (max-device-width : 1024px) and (orientation : portrait){<br />
.vc_col-sm-3 {<br />
width: 50% !important;<br />
}<br />
}</p>
<p>&nbsp;</p>
<p>Το  <strong>and (orientation : portrait) </strong>μπορεί και να παραληφθεί για να το δείχνει σωστά και στην ανάλογη οθόνη υπολογιστή..</p>

		</div>
	</div>
</div></div></div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://selidamou.gr/problem-solving/wpbakery-%ce%ba%ce%b1%ce%b9-portrait-mode-%cf%83%ce%b5-tablet-1-4-1-2/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
