<?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>ZigPress</title>
	<atom:link href="https://www.zigpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.zigpress.com</link>
	<description>Consultancy, Solutions, Research</description>
	<lastBuildDate>Wed, 11 Sep 2019 11:42:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://www.classicpress.net/?v=4.9.11-cp-1.0.2</generator>
	<item>
		<title>PLDT Home Fibr router admin and access point (AP) isolation</title>
		<link>https://www.zigpress.com/2019/08/11/pldt-home-fibr-router-admin-and-access-point-ap-isolation/</link>
		<comments>https://www.zigpress.com/2019/08/11/pldt-home-fibr-router-admin-and-access-point-ap-isolation/#respond</comments>
		<pubDate>Sun, 11 Aug 2019 13:41:09 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Philippines]]></category>
		<category><![CDATA[Servers]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4934</guid>
		<description><![CDATA[This post is clearly not our normal fare &#8211; it&#8217;s not about WordPress or ClassicPress, or Mac computers. We&#8217;ve written this in order to help out fellow users of PLDT&#8230; <a class="excerptmore" href="https://www.zigpress.com/2019/08/11/pldt-home-fibr-router-admin-and-access-point-ap-isolation/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>This post is clearly not our normal fare &#8211; it&#8217;s not about WordPress or ClassicPress, or Mac computers. We&#8217;ve written this in order to help out fellow users of PLDT Home Fibr internet connections here in the Philippines, following our own extremely frustrating experiences with this provider.</p>
<h3>AP (Access Point) Isolation</h3>
<p>The standard PLDT Home Fibr ONU (modem/router) &#8211; see image above &#8211; implements access point isolation, which means that while it has 4 LAN ports as well as both 2.4GHz and 5GHz wifi, any device connected via wifi cannot communicate with a device connected to a LAN port, and vice versa. Apparently this is done for &#8220;security reasons&#8221; (in other words, PLDT views its users as stupid and is looking for ways to minimise the time it spends on technical support).</p>
<p>What this means in practical terms is that if you have a home server (e.g. a Synology Diskstation or something like it that connects to the LAN via an ethernet cable), your wifi-connected devices cannot see it on the network, rendering it useless.</p>
<h3>Potential Solutions</h3>
<ol>
<li>Add a USB wifi adaptor to your server, if you can (only certain adaptors will work and it will also depend on your server operating system)</li>
<li>Put your PLDT Home Fibr modem/router into bridge mode, so it just acts as a modem, and connect another wifi router to it via an ethernet cable &#8211; this involves getting the configuration of the second router just right in order for things to work, and makes it harder to access the admin screens of your PLDT box</li>
<li>Find a way to turn off the access point isolation</li>
</ol>
<p>We decided against solution 1, since getting the configuration right will still depend on having a second router set up in order to talk to the server while setting up the USB wifi adaptor, and tutorials showing exactly how to sort it out seem hard to find.</p>
<p>On researching solution 2 it seems that putting the PLDT modem/router into bridge mode can cripple the throughput speeds, so we&#8217;ve decided not to mess with that.</p>
<p>That leaves solution 3 &#8211; finding a way to turn off the AP isolation, and after several hours of googling various relevant-sounding phrases we found an article that linked to another article that linked to another article that linked to a Discord chat room where a search of the chats revealed a way to do it. Then we had to go to a different source, also challenging to find, in order to get the latest superadmin username and password. Phew.</p>
<p>The only trouble is, whenever you restart your router (or there is a power cut, which can be quite frequent here in the Philippines) you have to repeat the process of disabling the AP isolation. Still, it&#8217;s better than no solution at all, and it actually only takes a minute to do.</p>
<h3>Disabling AP Isolation</h3>
<p>Note: this works on our particular firmware version (RP2631) &#8211; we have no idea which other versions it works on. Try it and see.</p>
<p>You&#8217;ll need a Telnet client installed &#8211; here&#8217;s how to set one up on <a href="http://osxdaily.com/2018/07/18/get-telnet-macos/" rel="noopener" target="_blank">Mac</a> or on <a href="https://www.rootusers.com/how-to-enable-the-telnet-client-in-windows-10/" rel="noopener" target="_blank">Windows</a>.</p>
<ol>
<li>First you have to enable the Telnet interface on your PLDT box.<br />
Go to <strong><em>http://192.168.1.1/fh</em></strong> (bookmark it) and log in with the following details:<br />
Administrator: <strong><em>f~i!b@e#r$h%o^m*esuperadmin</em></strong> (make sure the screen prompt says &#8216;Administrator&#8217; NOT &#8216;Username&#8217;)<br />
Password: <strong><em>s(f)u_h+g|u</em></strong><br />
For older firmware versions, a different superadmin username and password may apply</li>
<li>Once logged in, select &#8216;Debug Switch&#8217; on the sidebar menu</li>
<li>Enable the Telnet switch and click Apply</li>
<li>Log out</li>
<li>Open a terminal window or command prompt</li>
<li><strong><em>telnet 192.168.1.1</em></strong> and use <strong><em>gpon</em></strong> as the login and as the password</li>
<li>When it says &#8216;User&#8217;, type <strong><em>enable</em></strong> and press Enter, then enter <strong><em>gpon</em></strong> again as the password</li>
<li>Type <strong><em>cd switch</em></strong> and press Enter</li>
<li>Type <strong><em>control port_fw_eligiblity_switch disable</em></strong> and press Enter (no that&#8217;s not a typo in the word eligiblity!)</li>
<li>Done. Close the command prompt window.</li>
</ol>
<p>This worked a treat and we were instantly able to see and connect to our Synology Diskstation (hooked up to the PLDT box via LAN cable) from a Mac via wifi, without using an extra router.</p>
<p>Our intention now is to contact PLDT technical support and request that they <strong><em>permanently</em></strong> turn off AP isolation on our PLDT box, to save us having to follow the above procedure each time the PLDT box restarts following a power cut.</p>
<p>Please note that no systems were hacked or attacked in the making of this post &#8211; all we did was spend an afternoon fishing for information via Google and trying things out. All the information presented is already out there to be found with some effort.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2019/08/11/pldt-home-fibr-router-admin-and-access-point-ap-isolation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detecting https in PHP &#8211; the definitive guide</title>
		<link>https://www.zigpress.com/2019/04/02/detecting-https-in-php-the-definitive-guide/</link>
		<comments>https://www.zigpress.com/2019/04/02/detecting-https-in-php-the-definitive-guide/#comments</comments>
		<pubDate>Tue, 02 Apr 2019 12:58:55 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[PHP & MySQL]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4911</guid>
		<description><![CDATA[Detecting whether your PHP code is running on https or http is useful in a number of situations, particularly if you&#8217;re building a URL to set a form action or&#8230; <a class="excerptmore" href="https://www.zigpress.com/2019/04/02/detecting-https-in-php-the-definitive-guide/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Detecting whether your PHP code is running on https or http is useful in a number of situations, particularly if you&#8217;re building a URL to set a form action or something similar, but it&#8217;s actually not as straightforward as it should be.</p>
<p>If you search on Google or Stack Overflow for advice on how to detect https using PHP, you&#8217;ll get a number of different answers. Most if not all of these answers will involve PHP server variables, but they use different ones, so which do you pick?</p>
<p>Here are the common methods&#8230;</p>
<h4>The &#8216;HTTPS&#8217; server variable</h4>
<p>You would check this variable something like this:</p>
<pre>$https = false;
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
    $https = true;
}</pre>
<p>But this only works on some servers. On others, this server variable is simply absent.</p>
<h4>The &#8216;SERVER_PORT&#8217; server variable</h4>
<p>You would check this variable something like the example below:</p>
<pre>$https = false;
if (isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'])) {
    $https = true;
}</pre>
<p>But this only works on some servers. On others (I&#8217;m looking at you, Cloudways), $_SERVER[&#8216;SERVER_PORT&#8217;] can sometimes return 80, even if the site is running on SSL. If there&#8217;s a good reason for that, it escapes me at the moment.</p>
<p>So what to do?</p>
<h4>Combining these the WordPress way</h4>
<p>WordPress has a core function <strong>is_ssl</strong> which combines the above two methods so that more different servers are covered and the chances of getting back the correct result are increased. Here it is in its current incarnation:</p>
<pre>function is_ssl() {
    if ( isset( $_SERVER['HTTPS'] ) ) {
        if ( 'on' == strtolower( $_SERVER['HTTPS'] ) ) {
            return true;
        }
        if ( '1' == $_SERVER['HTTPS'] ) {
            return true;
        }
    } elseif ( isset( $_SERVER['SERVER_PORT'] ) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
        return true;
    }
    return false;
}</pre>
<p>This is good so far as it goes, and it definitely increases the chances of getting the right result.</p>
<p>But there&#8217;s another case where this may fail &#8211; and that is on servers that are operating via a reverse proxy. I&#8217;m not going to try and explain what a reverse proxy is (though if you&#8217;re using CloudFlare you&#8217;re using one), but suffice to say that sometimes the function above will fail, because there&#8217;s yet another server variable that you need to check instead&#8230;</p>
<h4>The &#8216;HTTP_X_FORWARDED_PROTO&#8217; server variable</h4>
<p>Sometimes this will be the only relevant server variable that is present and set, so you need to check for it, which you can do like this: </p>
<pre>$https = false;
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ('https' == $_SERVER['HTTP_X_FORWARDED_PROTO'])) {
    $https = true;
}</pre>
<p>So if we combine all three methods described above, we should have a universal https detection method. So, we can create&#8230;</p>
<h4>One function to rule them all</h4>
<p>I make no guarantees but I think this function should cover your behind on a significant majority of web servers out there that are running PHP. Unless you&#8217;re using IIS in which case you should just go read the IIS documentation to learn which non-standard method Microsoft has imposed.</p>
<pre>
function is_definitely_ssl() {
    if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
        return true;
    }
    if (isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'])) {
        return true;
    }
    if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ('https' == $_SERVER['HTTP_X_FORWARDED_PROTO'])) {
        return true;
    }    
    return false;
}
</pre>
<p>I&#8217;ve eliminated the &#8216;else&#8217; structure of the WordPress function, since it&#8217;s not needed. The first condition that is met will drop out of the function with the positive result. I&#8217;ve deliberately put the conditions in a certain order, so that the ones I believe are more common will be checked first, thus making the function more efficient.</p>
<p>Add this to your snippets collection, utilities class, or whatever you use to store functions that you can use in many projects.</p>
<p>I&#8217;ve actually seen yet another server variable &#8211; $_SERVER[&#8216;REQUEST_SCHEME&#8217;] &#8211; discussed in relation to this topic, but I&#8217;ve never seen it available on any server I&#8217;ve encountered. So I&#8217;m going to assume it&#8217;s very unusual and politely ignore it.</p>
<p>If you know of another method in reasonably widespread use that I haven&#8217;t covered, please leave a comment below and I&#8217;ll amend the article!</p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2019/04/02/detecting-https-in-php-the-definitive-guide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Catching up with ClassicPress</title>
		<link>https://www.zigpress.com/2019/03/18/catching-up-with-classicpress/</link>
		<comments>https://www.zigpress.com/2019/03/18/catching-up-with-classicpress/#comments</comments>
		<pubDate>Mon, 18 Mar 2019 06:36:08 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[ClassicPress]]></category>
		<category><![CDATA[Gutenberg]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4888</guid>
		<description><![CDATA[In our previous article published late last year, &#8220;ClassicPress Beta is now available – should we adopt it?&#8220;, we took a look at the new WordPress fork called ClassicPress, which&#8230; <a class="excerptmore" href="https://www.zigpress.com/2019/03/18/catching-up-with-classicpress/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>In our previous article published late last year, &#8220;<a href="https://www.zigpress.com/2018/11/21/classicpress-beta-is-now-available-should-we-adopt-it/">ClassicPress Beta is now available – should we adopt it?</a>&#8220;, we took a look at the new WordPress fork called <a href="https://www.classicpress.net/" rel="noopener noreferrer" target="_blank">ClassicPress</a>, which essentially provides a normal WordPress installation but without the new Gutenberg block editor.</p>
<p>In that article we concluded that ClassicPress was an exciting development in the WordPress ecosystem, but we didn&#8217;t yet feel able to switch any client sites from WordPress to ClassicPress, primarily because of the lack of a security plugin that could scan the ClassicPress core installation and report any &#8216;dodgy&#8217; files &#8211; something we normally use WordFence for. </p>
<p>And to be honest, we were also concerned about whether the ClassicPress project would actually succeed in gaining enough traction not to disappear without warning a few months down the line. However, despite our uncertainty, we still took steps to ensure that all ZigPress free plugins in the WordPress repository worked correctly on ClassicPress installations, as a way of giving a little support to the project.</p>
<p>Now, almost four months later, ClassicPress has reached its first non-beta release (1.0.1 in fact) and as we had hoped, there is now a free security plugin available that scans ClassicPress core files on a daily basis, reporting any discrepancies via email. That plugin is the excellent <a href="https://wordpress.org/plugins/wp-simple-firewall/" rel="noopener noreferrer" target="_blank">Shield Security</a>.</p>
<p><img src="https://xvvzqpunq2yd.wpcdn.shift8cdn.com/wp-content/uploads/2019/03/classicpress-colour-290x290.png" alt="" width="290" height="290" class="alignright size-medium wp-image-4898" />During that time I have participated in discussions in the <a href="https://forums.classicpress.net/" rel="noopener noreferrer" target="_blank">ClassicPress forums</a>, helping out with testing and bug reporting and offering opinions, and have gradually come to the conclusion that the growing team behind ClassicPress are serious about making it succeed as a long-term, indeed permanent, replacement for WordPress. </p>
<p>The other issue discussed in our previous article was that the <a href="https://wordpress.org/plugins/mainwp/" rel="noopener noreferrer" target="_blank">MainWP</a> WordPress installation management system was not able to automatically update ClassicPress installations (though it can update <em>themes</em> and <em>plugins</em> on ClassicPress installations), and it&#8217;s only fair to point out that this situation hasn&#8217;t yet changed.</p>
<p>So, has ZigPress&#8217;s view about using ClassicPress on live sites changed since our previous article was published?</p>
<p><strong>Yes, it has.</strong></p>
<p>We&#8217;ve made the decision that certain ZigPress client sites will be migrated from WordPress to ClassicPress, and by &#8216;certain&#8217; we mean:</p>
<ul>
<li>sites where the client is not very technically minded and happy to be guided by us regarding the back-end user experience that their site provides</li>
<li>sites where the client leaves all content editing to ZigPress</li>
<li>sites where content editing is based entirely on Advanced Custom Fields Pro and the Gutenberg block editor would be completely superfluous for that reason.</li>
</ul>
<p>Other client sites, including those where the client is more technical and is very much engaged in the WordPress experience, will be left as they are for now (since it&#8217;s possible that the client will ask to use Gutenberg at some point), and we will discuss the ClassicPress option with those clients a little further down the line.</p>
<p>ZigPress also runs a small number of non-client sites (i.e. our own projects), and these will all be migrated to ClassicPress in due course &#8211; including this site.</p>
<p>When we are asked to submit proposals for new website projects, we will assess the requirements on a case-by-case basis when deciding whether to specify WordPress or ClassicPress as our chosen platform for the project.</p>
<p>So in conclusion, we&#8217;re happy to announce that <strong>ZigPress is now committed to ClassicPress as a key platform in our business activities</strong> (though not the only platform of course), and we hope and expect that the ClassicPress project will go from strength to strength in the coming months.</p>
<p>If you&#8217;re a WordPress developer who would rather work without the block editor, we now feel we can recommend ClassicPress as a genuine alternative that is well worth examining.</p>
<p>And if you work for MainWP, we would like to encourage you to support this new growing platform!</p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2019/03/18/catching-up-with-classicpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ClassicPress Beta is now available &#8211; should we adopt it?</title>
		<link>https://www.zigpress.com/2018/11/21/classicpress-beta-is-now-available-should-we-adopt-it/</link>
		<comments>https://www.zigpress.com/2018/11/21/classicpress-beta-is-now-available-should-we-adopt-it/#comments</comments>
		<pubDate>Wed, 21 Nov 2018 12:27:32 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[ClassicPress]]></category>
		<category><![CDATA[Gutenberg]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4854</guid>
		<description><![CDATA[The ClassicPress fork of WordPress, inspired initially by the forced introduction of Gutenberg in WordPress 5.0, is progressing positively, and today the first Beta was released, superceding the initial Alpha&#8230; <a class="excerptmore" href="https://www.zigpress.com/2018/11/21/classicpress-beta-is-now-available-should-we-adopt-it/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>The <a href="https://www.classicpress.net/" rel="noopener" target="_blank">ClassicPress</a> fork of WordPress, inspired initially by the forced introduction of Gutenberg in WordPress 5.0, is progressing positively, and today the first <a href="https://www.classicpress.net/download/" rel="noopener" target="_blank">Beta</a> was released, superceding the initial Alpha release.</p>
<p>The main feature added by the Beta is the advent of automatic updating, which of course we won&#8217;t see the benefit of until the next release, but it&#8217;s good to have it implemented.</p>
<p>I have ClassicPress installed on a test site on my development system, and aside from the different icon on the admin screens you&#8217;d hardly know the site isn&#8217;t WordPress &#8211; everything simply works the same, which for now is exactly as it should be.</p>
<p>As a developer who has wrestled with Gutenberg and would rather not have to, I&#8217;ve been closely examining the marketing copy produced by both the ClassicPress and <a href="https://calmpress.org/" rel="noopener" target="_blank">CalmPress</a> forks, and for now I think the right route for me is to continue testing and working with ClassicPress on my development system, and to leave CalmPress in the wings for now (but not forget about it entirely). The reason for this is that I believe the ClassicPress team are prioritising compatibility more highly than the CalmPress developer, and that is something that is important for me.</p>
<p>The acid test, of course, will be to use ClassicPress on a live site, and I would love to, but there are two things that need to happen before I&#8217;m willing to do that.</p>
<p>These days there are certain plugins that I use across all my sites and rely on heavily. One of these is <strong>WordFence</strong>, which scans my live sites and reports on vulnerabilities and attacks. At the moment WordFence will complain and throw out a bunch of false positives if run on a ClassicPress installation, because it is comparing that installation with a stock WordPress installation, and many core files have changed in ClassicPress. If the ClassicPress team are able to persuade those at WordFence to make it check against ClassicPress core files instead of WordPress core files, when it detects a ClassicPress installation, that would sweeten the deal considerably for me.</p>
<p>The other issue for me is that I use the <strong>MainWP</strong> centralised control system to handle core and plugin updates for all my sites and my clients&#8217; sites. It saves me untold hours every week and underpins my ZigCare service. I&#8217;ve found that MainWP handles plugin updates for ClassicPress installations without a problem, which is excellent news, but right now it&#8217;s impossible to know if it will handle ClassicPress core updates, until another release (after the current Beta) is made. You can be sure I&#8217;ll be testing that once there&#8217;s another ClassicPress release.</p>
<p>Something that both of those plugins have in common of course, is that they communicate (or trigger communication) with a third party outside the website installation. WordFence communicates with its servers and the WordPress repositories to check file integrity, and MainWP&#8217;s child plugin connects with the WordPress repositories for the purpose of identifying and fetching required updates. And that, I think, indicates one of the crucial things for ClassicPress: aside from the quality of ClassicPress itself, its success will also depend on the willingness of third parties to make it part of their ecosystems.</p>
<p>So for me in particular, ClassicPress isn&#8217;t yet ready for using on a live site, especially one belonging to a client. However, it does show promise in a lot of ways: a solid Beta has been delivered on schedule; there is an <a href="https://www.classicpress.net/about/" rel="noopener" target="_blank">eclectic team of people involved</a>; they engage in discussion via their <a href="https://forums.classicpress.net/" rel="noopener" target="_blank">forums</a>; and their <a href="https://www.classicpress.net/blog/2018/10/29/classicpress-for-business-professional-organization-websites/" rel="noopener" target="_blank">aims for ClassicPress</a> fit with the way ZigPress approaches web development. </p>
<p>I&#8217;m quite excited to see how things develop.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2018/11/21/classicpress-beta-is-now-available-should-we-adopt-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How is ZigPress managing the introduction of Gutenberg?</title>
		<link>https://www.zigpress.com/2018/11/01/how-is-zigpress-managing-the-introduction-of-gutenberg/</link>
		<comments>https://www.zigpress.com/2018/11/01/how-is-zigpress-managing-the-introduction-of-gutenberg/#respond</comments>
		<pubDate>Thu, 01 Nov 2018 17:49:43 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[ClassicPress]]></category>
		<category><![CDATA[Clients]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Gutenberg]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4839</guid>
		<description><![CDATA[If you keep your ear to the ground as far as the WordPress content management system is concerned, or even if you don&#8217;t, you may have heard that a new&#8230; <a class="excerptmore" href="https://www.zigpress.com/2018/11/01/how-is-zigpress-managing-the-introduction-of-gutenberg/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>If you keep your ear to the ground as far as the WordPress content management system is concerned, or even if you don&#8217;t, you may have heard that a new content editor called Gutenberg will be introduced when WordPress 5.0 is released.</p>
<p>Since WordPress is such an important part of our business activities, we&#8217;ve been following Gutenberg&#8217;s development with interest, particularly in the various Facebook groups that exist for WordPress developers. Its development has been dogged by controversy, particularly relating to whether it should permanently remain an optional plugin (we think it should), and how accessible it is for disabled users (spoiler: it isn&#8217;t, not yet at least).</p>
<p>Now that WordPress 5.0 is into Beta, we thought it might be useful to outline our strategy for dealing with Gutenberg on our client sites.</p>
<h4>Our Strategy</h4>
<p>The fairly short and succinct description of our strategy is this: we&#8217;re disabling Gutenberg on all client sites for the time being.</p>
<p>And why are we doing that?</p>
<h4>Our Rationale</h4>
<ol>
<li>Our clients need their sites to keep working. At the moment Gutenberg is causing problems with many other plugins and many developers have complained of broken sites after adding Gutenberg.</li>
<li>Our clients haven&#8217;t asked about Gutenberg, and may not even be aware of it. They probably wouldn&#8217;t take kindly to a sudden change in the way they manage their site&#8217;s content.</li>
<li>Because our clients haven&#8217;t asked for Gutenberg, they probably wouldn&#8217;t take kindly to an unexpected bill for time spent resolving problems on their site caused by adding Gutenberg without asking them first.</li>
<li>Many of our client sites use a particular plugin (Advanced Custom Fields Pro) as a modular page builder, allowing you to flexibly add blocks of content to a page; in this scenario Gutenberg (which does the same thing) would be superfluous and simply get in the way.</li>
<li>Gutenberg is still missing many useful editing functions when compared to the existing &#8216;classic&#8217; WordPress content editor.</li>
<li>We have found from bitter experience that using &#8220;version 1.0&#8221; of anything is generally a bad idea. Yes, Gutenberg has been evolving as a plugin but the version packaged with WordPress 5.0 will be the first version that the WordPress core team consider to be &#8220;ready&#8221;, and we would rather wait until there have been two or more further releases so that more of the bugs can be worked out.</li>
<li>We&#8217;re busy, and suddenly arranging a large number of Gutenberg training sessions for clients would be very difficult.</li>
</ol>
<p>There is one exception to this strategy: recently we took over maintenance for a site developed by a third party, who used the Gutenberg plugin in order to make the content editing experience more like what it will be in WordPress 5.0. We have no choice but to support this site as-is, and in fact it is giving us useful insights into the problems that Gutenberg has caused and will probably continue to cause.</p>
<h4>The Future</h4>
<p>When there have been enough future WordPress releases that Gutenberg is a polished and trouble-free part of the WordPress administration experience, we&#8217;ll set up some test sites and, if the outcome is good, may start using it for certain new design and build projects.</p>
<p>However, existing client sites that we maintain will be kept in a Gutenberg-free state for as long as possible. Then, once disabling Gutenberg is no longer possible with new WordPress releases, we will discuss the way forward with clients. This ensures that additional costs for clients are postponed for as long as possible.</p>
<h4>Alternatives</h4>
<p>We have also been closely following the development of two projects that promise to offer an alternative to a Gutenberg-equipped WordPress: <a href="https://www.classicpress.net/" rel="noopener" target="_blank">ClassicPress</a> and <a href="https://calmpress.org/" rel="noopener" target="_blank">CalmPress</a>. We will continue to evaluate these projects as possible alternative platforms for certain projects and existing sites.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2018/11/01/how-is-zigpress-managing-the-introduction-of-gutenberg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Page SEO Guide: What Backlinks To Build &#038; Why</title>
		<link>https://www.zigpress.com/2018/06/04/off-page-seo-guide-what-backlinks-to-build-why/</link>
		<comments>https://www.zigpress.com/2018/06/04/off-page-seo-guide-what-backlinks-to-build-why/#comments</comments>
		<pubDate>Mon, 04 Jun 2018 19:21:17 +0000</pubDate>
		<dc:creator><![CDATA[Paul Redfern]]></dc:creator>
				<category><![CDATA[Guest Articles]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4810</guid>
		<description><![CDATA[Do you have an amazing website, add content frequently but are receiving little to no traffic? Or does the following sound familiar? You have spent weeks working on a professional&#8230; <a class="excerptmore" href="https://www.zigpress.com/2018/06/04/off-page-seo-guide-what-backlinks-to-build-why/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Do you have an amazing website, add content frequently but are receiving little to no traffic?</p>
<p>Or does the following sound familiar?</p>
<p>You have spent weeks working on a professional website design for your business, or you have paid a <a href="https://www.zigpress.com/services/">website designer</a> to make the website of your dreams, but you see no traction in the search engines, resulting in no traffic, leads or customers. </p>
<p>Thankfully there is a systematic way to overcome this problem and it can be broken down into three key areas</p>
<ol>
<li>Technical SEO</li>
<li>On Page SEO </li>
<li>Off Page SEO</li>
</ol>
<p>I assume all readers of this blog are quite aware of point one above (Technical SEO). If you are uncertain about your technical SEO and need an SEO Audit, you can check my <a href="https://fixnowmedia.com/seo-services-malta/" target="_blank">Malta-based SEO service</a>, where we would be more than happy to help.</p>
<p>Let’s also assume that you are adding content to your website on a regular basis (two to four times per month). It must not be ordinary content but high-quality content that is based on keyword phrases your target audience is using when searching for goods or services you provide. You must also ensure that the content you produce is of better quality than currently exists on page 1 of Google search results. These processes are the fundamental blocks of point two above (On-Page SEO).</p>
<p>So this article is going to concentrate on point 3, Off Page SEO, which is often sadly neglected by website owners. Why you ask? Well, because it can be overwhelming to know what to do, it can take months before you see the positive effects and most of all because it is often very tedious work!</p>
<h3>Building Your Brand &#038; Domain Authority</h3>
<p>When you have a new site, the main goal is to increase your level of authority and trust by building up a network of referral assets all driving traffic back to your website. </p>
<p>You can achieve this by utilising online platforms and third-party websites to promote your content, products, services and even your own personal brand. </p>
<p>In the SEO world, this is referred to as Off Page SEO or backlink building. </p>
<p>The beauty of the backlinking strategies listed below not only drive traffic from these off page web portals and websites, but you increase your page rankings in the Google Search Engine as Google counts backlinks as one of their top three ranking factors in their ranking algorithm (content and Rankbrain algorithm being the other two).</p>
<p>According to <a href="https://ahrefs.com/blog/link-building/" target="_blank">ahrefs</a> study, backlink building is more effective than On-page SEO. </p>
<p><img src="https://xvvzqpunq2yd.wpcdn.shift8cdn.com/wp-content/uploads/off-page-seo-guide-malta-640x581.jpg" alt="" width="640" height="581" class="alignnone size-large wp-image-4812" /></p>
<p>Backlinks force your way onto page one, while On-page SEO determines where you rank on Page one.</p>
<p>Now, this does not mean you cannot rank on Google Page One without backlinks as it all depends on the level of competition for the keyword phrases you are trying to target. However, for more popular searches with mid to high level competition, you will need to attain backlinks to get those higher Google rankings.</p>
<p>Be warned though, not all backlinks are the same. Google&#8217;s algorithm (Penguin update) ensured that only high-quality backlinks are counted towards your rankings, therefore forget trying to buy cheap backlinks on marketplaces like Fiverr or Warrior Forum as you will do more harm than good to your site. Unnatural backlinking as provided by the services on these websites will land you a Google penalty.</p>
<h3>What Backlinks Should You Be Building?</h3>
<p>There are the four different forms of Off Page SEO you should be building to grow your online brand and drive consistent traffic to your website, which if done correctly will increase month after month.</p>
<h4>Social Signals</h4>
<p>You should secure your brand name on all the major social networks. This will build your domain and brand authority as Google trusts these networks. Spend some time personalising your profile pages, add your logos and pictures of your office, products, opening hours, areas of expertise, fun facts etc. Also add a link back your website and link to your other social network accounts which pass valuable link juice between your link properties and back to your site, offering additional SEO value. </p>
<p>Once you secure your brand name across all the major sites and personalised your profile pages (there are over 40 essential social networks you should set up), set up automation using services like <a href="https://ifttt.com/" target="_blank">IFTTT</a> or Jetpack plugin to syndicate your latest blog posts.</p>
<p>This takes time to set up at first, but it’s a one and done type task, and it will create links and drive traffic to your website, everytime you publish a post on your blog.</p>
<h4>Hustle Backlinks</h4>
<p>The next type of backlink to build is called hustle backlinks as they are required at the very initial stage of setting up a website. Your new site will have very little domain authority in the eyes of Google at this point. Therefore, you will see very little search engine traffic, so you need to self-promote to build your brand and get the initial traffic moving!</p>
<p>This type of hustle backlinking involves building your online network in communities, forums and websites where your ideal customer is already hanging out. </p>
<p>In these type of online communities, you cannot just register and start promoting your business off the bat as this is seen as spam. You will get barred and ruin your reputation before you even begin. You must add value to the community by helping others using your knowledge and expertise. You can then drop links back to useful content on your website when it makes sense. This will naturally drive referral traffic back to your site as well as build your brand authority.</p>
<p>Every niche imaginable has their online communities. And if you cannot find one exactly, there are always geo communities which offer more broad subject matter but still useful to drive traffic to your website.</p>
<p>Just concentrate on the top 5 to 10 following website types to build your online brand even further but drive highly engaged traffic to your site:</p>
<ul>
<li>Industry Leading Blog Comments</li>
<li>Niche Forums</li>
<li>Local Geographical Forums</li>
<li>Niche Directories</li>
<li>Local Geographical Directories</li>
<li>Questions and Answers Sites (e.g. Quora)</li>
</ul>
<h4>Repurpose Content Links</h4>
<p>A great way to ensure you get the maximum ROI from your content is to repurpose it so that you can syndicate on other well known and highly trafficked websites to drive potential customers back to your site.</p>
<p>Therefore, every time you invest in content, make the most out of it by repurposing and sharing it on the following website types (where it makes sense to do so):</p>
<ul>
<li>Video Sharing Sites</li>
<li>Infographic Sites</li>
<li>Audio Sites</li>
<li>Slide Share Sites</li>
</ul>
<p>You can also input these media types into your content which increases user engagement metrics (which is also a ranking factor with google) and also makes your content stand out more from your competitors.</p>
<p>When you add your repurposed media to these websites, you can also post a link back to your post page, which gives you additional SEO benefit. This is a safe in the eyes of Google as the links are coming from trusted websites such as Youtube.com, Dailymotion.com, soundcloud.com, slideshare.net, visual.ly etc. </p>
<h4>Editorial Backlinks (a.k.a. Power Backlinks)</h4>
<p>An editorial backlink is where the owner/editor of a website or blog places a link to your site within the content or body of an article/post on their website.</p>
<p>These are exceptionally high-quality backlinks that can drive lots of referral traffic to your website (dependant on the domain authority of the site). However, the even bigger bonus with these editorial links is the boost in your google search engine rankings.</p>
<p>Here is a high-level overview of the most popular ways to get these type of power backlinks:</p>
<h5>Guest Posts</h5>
<p>Find blogs in your niche that accept blog posts and pitch the editor topic ideas that you think would suit their audience. The more research you do on your target guest post website, the higher the chance that they will allow you to submit a guest post. </p>
<h5>Resource Page Links</h5>
<p>This strategy aims to create a high-quality resource page or resource centre on your website that is worthy of someone adding this page to their resource page. Use email outreach to ask these blog owners to include a link back to your resource page. </p>
<h5>Infographic Outreach</h5>
<p>This is also called a Guestographic, and it is quite simple to execute. Find a content topic relevant to your niche or complementary niche that has already proven to receive a lot of backlinks. Make a visually compelling infographic of this content topic and add some extra points to make it even better than the original content piece. You then outreach to websites who have already linked to the old article or similar content pieces and ask if they would like to see your infographic. You will find that some website owners will either add it to their existing page, or they will create a new blog post on your infographic. You can offer to write the introduction where you include a link back to your website. If the website owner responds but is not interested in the infographic, try discussing if they are willing to accept a guest post instead and put forward some topic ideas. </p>
<h5>Round-Up Posts</h5>
<p>Some websites frequently publish roundup posts or best of the web type posts. Do your research on the types of content they like to include and outreach to them when you have published a high-quality article and look for inclusion.</p>
<h5>Broken Backlinks</h5>
<p>This can be quite labour intensive, therefore, using automated tools such as scrapebox is highly recommended. Make a list of websites from where you would like a link. Then you must scrape all the pages of your target website and scan each page for a broken backlink. If you have a piece of content that is similar in topic to the content of the broken backlink, send a mail to the webmaster and informing him of the broken backlink and advising that you have a link that could be used instead. Of course, if you do not have a similar piece of content, you can always use archive.org to see what content was on the broken backlink page and make a better version of it, then proceed to email the webmaster as before.</p>
<h5>Testimonials</h5>
<p>Every business uses suppliers, services or tools/products to perform their daily work. Each one of these entities also has their website. Reach out to your favourite suppliers, service providers or tool/product owners and ask if they would like to add a testimonial on their website from you, as long as they will place a link back to your site. As testimonials are great for boosting conversions, it is a win-win situation for both parties.</p>
<h5>Epic Content Promotion</h5>
<p>This is very similar to the guestographic strategy, but instead of making an infographic using data points from a piece of content that has previously received backlinks, the aim is to create a better version of the written article. So if an original content piece were 2000 words, the new content piece would be 4000 words or updated relevant content and also contain additional media such as slick images, better formatting, custom videos etc. The article should be head and shoulders better than the original piece and justify the “epic” tag. Like the guestographic strategy, you then outreach to everyone who has shared the original post before or websites who have shared something similar before asking to replace the link/include it on their site.</p>
<h5>Existing Network </h5>
<p>This is quite an often overlooked strategy but such a simple one. Every person knows at least a handful of people who own a website or blog. While it may not be as highly relevant as one would want, it still counts. Ask your friends if you can write a guest post on their site in return for some free work or a few beers. If they are your real friends, they will happily oblige with no strings attached!</p>
<h3>Bonus Tips &#8211; Brand Building &#038; Viral Content Strategies To Drive Traffic</h3>
<h4>Expert Roundups</h4>
<p>This is a great way to get on the radar of influencers in your niche. Not only do you build meaningful relationships but you also get to produce an outstanding piece of content. Send a niche related question to prominent bloggers in your industry asking for their expert opinion. Once you have compiled all the answers and added your input with regards to the topic&#8217;s subject matter, send an email to the experts letting them know about it. A high percentage of the experts will share the post on their social media accounts, leading to a massive inrush of traffic. Some of the experts may even link to the article on their website, gaining you a high authority backlink for your troubles.</p>
<h4>Expert Listicles</h4>
<p>Make a list of complementary niches to yours and then put together a “best of” list, including all the leading players in that sphere. Like the previous strategy, once the article is published, promote it to all the included influencers via email and social media. Expect a lot of traffic if the article is well presented and the outreach emails are authentic and genuine. </p>
<p><em>Paul Redfern is the founder of <a href="https://www.fixnowmedia.com/" target="_blank">FixNowMedia</a> and regularly works in partnership with ZigPress when specialist SEO knowledge is required on a particular project.</em></p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2018/06/04/off-page-seo-guide-what-backlinks-to-build-why/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GIMP annoyances on Mac High Sierra</title>
		<link>https://www.zigpress.com/2018/03/27/gimp-annoyances-on-mac-high-sierra/</link>
		<comments>https://www.zigpress.com/2018/03/27/gimp-annoyances-on-mac-high-sierra/#comments</comments>
		<pubDate>Tue, 27 Mar 2018 16:06:26 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4761</guid>
		<description><![CDATA[Following the death of my old MacBook which ran Yosemite and ran GIMP without any problems, I had to purchase a new MacBook, and this one came with the High&#8230; <a class="excerptmore" href="https://www.zigpress.com/2018/03/27/gimp-annoyances-on-mac-high-sierra/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Following the death of my old MacBook which ran Yosemite and ran GIMP without any problems, I had to purchase a new MacBook, and this one came with the High Sierra version of MacOS installed.</p>
<p>As part of the reconfiguration process I downloaded the latest version of GIMP (2.8.22) for Mac and installed it, only to find that it now misbehaves in various extremely annoying ways.</p>
<p>I tried uninstalling the latest version of GIMP and installed various earlier versions (clearing the hidden library folder each time), but with the same results, so my assumption is that GIMP is not fully compatible with the High Sierra version of MacOS.</p>
<p>Here are the problems I found:</p>
<h3>CMD-H won&#8217;t hide GIMP</h3>
<p>This used to work when using GIMP on Yosemite. Now it doesn&#8217;t. I found that CMD-H was allocated to a layer function in GIMP&#8217;s shortcuts, and removed that, but it had no effect on the problem. CMD-H now does nothing at all.</p>
<h3>Opening a second image from Finder opens a new instance of GIMP</h3>
<p>Put two image files on your desktop. Right-click the first one and select &#8216;Open with GIMP&#8217;. No problem. GIMP launches and opens the image. Now right-click the second one and select &#8216;Open with GIMP&#8217;. A <strong>NEW INSTANCE</strong> of GIMP launches and loads the second image. Not desirable behaviour.</p>
<h3>When exporting, the final dialogue doesn&#8217;t have focus</h3>
<p>This is perhaps the worst problem. Say you have an XCF native GIMP image loaded, and you want to export it as a JPG. So you use CMD-SHIFT-E for export, and the export dialogue comes up. So far no problem. Then you select JPG in the file types dropdown, and click the button. The final export box appears (the one showing JPG quality), but it doesn&#8217;t have focus, and you can&#8217;t give it focus. It&#8217;s like it&#8217;s dead, or there&#8217;s an invisible overlay over it. The only option is to CMD-TAB (to switch tasks) then CMD-TAB again to bring focus to the dialogue. It&#8217;s infuriating.</p>
<p>This last problem has led me to start using <a href="http://seashore.sourceforge.net/The_Seashore_Project/About.html" rel="noopener" target="_blank">Seashore</a> as my main app for basic photo editing, but I miss the power of GIMP.</p>
<p>Surely GIMP&#8217;s Mac team can fix these problems?</p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2018/03/27/gimp-annoyances-on-mac-high-sierra/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Resolving permissions issues in XAMPP on Mac High Sierra</title>
		<link>https://www.zigpress.com/2018/03/19/resolving-permissions-issues-in-xampp-on-mac-high-sierra/</link>
		<comments>https://www.zigpress.com/2018/03/19/resolving-permissions-issues-in-xampp-on-mac-high-sierra/#comments</comments>
		<pubDate>Mon, 19 Mar 2018 16:25:43 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Platforms]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4763</guid>
		<description><![CDATA[As a WordPress developer I run a webserver on my main development system (a MacBook) so that I can develop and test in a private environment before deploying sites to&#8230; <a class="excerptmore" href="https://www.zigpress.com/2018/03/19/resolving-permissions-issues-in-xampp-on-mac-high-sierra/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>As a WordPress developer I run a webserver on my main development system (a MacBook) so that I can develop and test in a private environment before deploying sites to live domains.</p>
<p>I&#8217;ve always used XAMPP for this purpose &#8211; I&#8217;ve found using a pre-packaged environment like this gives me more flexibility to change component versions and configurations without risking messing up my Mac. There are other options of course (MAMP, DesktopServer, etc) but XAMPP works for me. I keep things simple by using a subfolder of localhost for each site and it all works fine.</p>
<p>Or rather, it did until I had to buy a new MacBook and reinstall all my apps and data&#8230;</p>
<p>One important aspect of working with WordPress sites is that each site needs to be able to write to its own folder structure, to install and update plugins.</p>
<p>With XAMPP out of the box, it seems this is no longer possible, and some configuration is needed.</p>
<p>Following a lot of googling and experimentation, I&#8217;m happy to explain how I resolved this problem (and some other related issues) and made my MacOS XAMPP installation WordPress-ready.</p>
<p>The solution is a combination of folder ownership and folder permissions.</p>
<h3>1. The Apache user account</h3>
<p>First, you need to make the Apache webserver in XAMPP run using your own user account. This gives it access rights to everything you yourself can access, and is needed because WordPress (rather unnecessarily and annoyingly) does a file owner check as well as a permissions check when deciding if it can write files to a folder. </p>
<p>Open XAMPP&#8217;s Application Manager window, select Apache Web Server, and click the Configure button. When the dialogue opens, select the Open Conf File button. This will open the Apache httpd.conf file in TextEdit or whatever your default editor is. You&#8217;ll have to accept a warning that XAMPP shows before the file will open.</p>
<p>In the editor, look for this block of code:</p>
<pre>&lt;IfModule unixd_module&gt;
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon
&lt;/IfModule&gt;</pre>
<p>Where it says <strong><em>User daemon</em></strong>, change <strong><em>daemon</em></strong> to your own username (e.g. <strong><em>john</em></strong>).</p>
<p>Where it says <strong><em>Group daemon</em></strong>, change <strong><em>daemon</em></strong> to <strong><em>staff</em></strong>.</p>
<p>Save and close the editor, then click OK in the XAMPP dialog box that opened, then restart Apache.</p>
<h3>2. The Folder permissions</h3>
<p>The above tweak may solve the problem, but not always. It&#8217;s best to adopt a &#8220;belt and braces&#8221; approach and change the permissions of your htdocs folder as well.</p>
<p>Open a terminal window and enter the following, to ensure that your htdocs folder is owned by your user account (change <strong><em>john</em></strong> to whatever your username is!). You&#8217;ll need to enter your password when prompted.</p>
<pre>sudo chown -R john:staff /Applications/XAMPP/htdocs/</pre>
<p>Now enter the following, to ensure your htdocs folder can be written to by any account:</p>
<pre>sudo chmod -R 777 /Applications/XAMPP/htdocs/</pre>
<p>Each of these commands may take a few seconds to run depending on how many folders and files there are in your htdocs folder.</p>
<p><strong>NOTE:</strong> If you have moved your htdocs folder (easy to do by editing httpd.conf), replace the standard path with your path in the above commands. For example, my own htdocs folder is actually <strong><em>/Users/andy/Sites/</em></strong> because that&#8217;s where I like it.</p>
<p>Now go back to XAMPP&#8217;s Application Manager and restart Apache again.</p>
<h3>3. The PHP settings</h3>
<p>By now you should be good to go, but there are a couple of PHP settings that will help your local WordPress sites perform better, so let&#8217;s sort them out now.</p>
<p>XAMPP&#8217;s php.ini file is located at <strong><em>/Applications/XAMPP/xamppfiles/etc/php.ini</em></strong> &#8211; so open this with your favourite code editor (I used BBEdit on this occasion).</p>
<p>Find the line that looks like this:</p>
<pre>max_execution_time=30</pre>
<p>and change the 30 to 60.</p>
<p>Now find the line that looks like this:</p>
<pre>memory_limit=128M</pre>
<p>and change the 128M to 256M. Don&#8217;t forget the M.</p>
<p>Now save and close the file, go back to XAMPP&#8217;s Application Manager, and restart Apache. </p>
<p>That&#8217;s it &#8211; your XAMPP installation should now play happily with WordPress.</p>
<p>Needless to say, don&#8217;t follow any of these tips on a web server that is serving to the public. These tips are intended only for private localhost development work behind a firewall and would leave a live server wide open to attack. </p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2018/03/19/resolving-permissions-issues-in-xampp-on-mac-high-sierra/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Swap two variables in PHP</title>
		<link>https://www.zigpress.com/2018/03/16/swap-two-variables-in-php/</link>
		<comments>https://www.zigpress.com/2018/03/16/swap-two-variables-in-php/#respond</comments>
		<pubDate>Fri, 16 Mar 2018 15:52:50 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP & MySQL]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4752</guid>
		<description><![CDATA[A very simple post, with a very simple solution to a very simple problem. Sometimes you will need to swap two variables around, perhaps if you have a form that&#8230; <a class="excerptmore" href="https://www.zigpress.com/2018/03/16/swap-two-variables-in-php/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>A very simple post, with a very simple solution to a very simple problem.</p>
<p>Sometimes you will need to swap two variables around, perhaps if you have a form that asks the user to enter minimum and maximum values for something, and they accidentally enter the larger value in the minimum box and vice versa.</p>
<p>The old school, basic way to do it is like this:</p>
<pre>$temp = $var1;
$var1 = $var2;
$var2 = $temp;</pre>
<p>However in PHP there is a quicker, more elegant way to do it, that doesn&#8217;t use a temporary variable:</p>
<pre>list( $var1, $var2 ) = array( $var2, $var1 );</pre>
<p>I told you it was simple. If you&#8217;re not sure you understand what is going on, read about the <a href="http://php.net/manual/en/function.list.php" rel="noopener" target="_blank">list function in the PHP online documentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2018/03/16/swap-two-variables-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The WordPress 4.8 text widget will destroy your content</title>
		<link>https://www.zigpress.com/2017/06/14/the-wordpress-4-8-text-widget-will-destroy-your-content/</link>
		<comments>https://www.zigpress.com/2017/06/14/the-wordpress-4-8-text-widget-will-destroy-your-content/#comments</comments>
		<pubDate>Wed, 14 Jun 2017 07:00:06 +0000</pubDate>
		<dc:creator><![CDATA[Andy]]></dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">https://www.zigpress.com/?p=4713</guid>
		<description><![CDATA[I just completely lost the contents of a text widget, and it was WordPress&#8217;s fault. I had a normal, old-style text widget, containing a set of links, and within each&#8230; <a class="excerptmore" href="https://www.zigpress.com/2017/06/14/the-wordpress-4-8-text-widget-will-destroy-your-content/">More&#160;&#187;</a>]]></description>
				<content:encoded><![CDATA[<p>I just completely lost the contents of a text widget, and it was WordPress&#8217;s fault.</p>
<p>I had a normal, old-style text widget, containing a set of links, and within each link was a FontAwesome icon tag, so that when the widget displayed on the site, you would see a set of icons, each one linking to a different URL.</p>
<p>After upgrading the site to WordPress 4.8, I wanted to remove one of the icons from the widget. So I went to Admin > Appearance > Widgets as normal, and lo and behold, the text widget had now converted into a WYSIWYG editor widget (though still very misleadingly called a text widget), as was announced in the WordPress 4.8 release notes. I was aware that this would be the case&#8230;</p>
<p>However, on visual mode, the widget showed no content at all (because I had not needed to enqueue FontAwesome for WordPress admin in my theme files), and on switching to text mode, the link tags had been somehow stripped, leaving just the &lt;i&gt; tags of the FontAwesome icons.</p>
<p>Yes, WordPress destroyed my content.</p>
<p>I immediately installed the new third party <a href="https://wordpress.org/plugins/classic-text-widget/" target="_blank">Classic Text Widget</a> but still had to rebuild the link tags for each icon.</p>
<p>Thinking about this, the ONLY way I could have recovered the full content of my old text widget would have been to go into the database and extract the serialised content from the options table before loading the admin widget screen.</p>
<p>This is not acceptable, and I don&#8217;t think I need to say that WordPress should have left the normal text widget as it was and created a separate WYSIWYG widget with a new name instead. What happened to the backward compatibility that they&#8217;re always bleating about?</p>
<p>This is WordPress&#8217;s first backward step in quite a while, but jeez it&#8217;s a big one. Someone in the WordPress core team seriously messed up and they should be called out on their idiotic decision.</p>
<p>So beware: if you&#8217;re a heavy text widget user, and you use them for HTML markup precisely because they don&#8217;t mess with it, WordPress 4.8 will try to break your sites. I would advise getting used to extracting the serialised widget instance content directly from your databases and then converting them all to Classic Text Widgets. You may also need to edit your CSS since the Classic Text Widget has a different class to the old text widget.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.zigpress.com/2017/06/14/the-wordpress-4-8-text-widget-will-destroy-your-content/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
