<?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>WordPress Resources From Web321 - Web Marketing</title>
	<atom:link href="https://web321.co/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>https://web321.co/tag/wordpress/</link>
	<description>Your WordPress Website Maintenance Experts</description>
	<lastBuildDate>Wed, 26 Jun 2024 20:46:21 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://web321.co/wp-content/uploads/2022/04/cropped-favicon-32x32.png</url>
	<title>WordPress Resources From Web321 - Web Marketing</title>
	<link>https://web321.co/tag/wordpress/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>What Causes a Blank White Screen?</title>
		<link>https://web321.co/what-causes-a-blank-white-screen/</link>
		
		<dc:creator><![CDATA[Shawn DeWolfe]]></dc:creator>
		<pubDate>Wed, 26 Jun 2024 20:46:21 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[blank white screen]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://web321.co/?p=58339</guid>

					<description><![CDATA[<p>A blank white screen on a WordPress site, often called the "White Screen of Death," is typically caused by a PHP error or memory exhaustion.</p>
<p>The post <a href="https://web321.co/what-causes-a-blank-white-screen/">What Causes a Blank White Screen?</a> appeared first on <a href="https://web321.co">Web321: Your Best WordPress Support</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A blank white screen on a WordPress site, often called the &#8220;White Screen of Death,&#8221; is typically caused by a PHP error or memory exhaustion. When a critical error occurs, instead of displaying the error message (which is often disabled for security reasons), PHP stops executing the script. This results in a blank white page being shown to the user.</p>
<p>Common causes include:</p>
<ol>
<li aria-level="1">PHP memory limit exceeded</li>
<li aria-level="1">Plugin conflicts or errors</li>
<li aria-level="1">Theme compatibility issues</li>
<li aria-level="1">Corrupted WordPress core files</li>
<li aria-level="1">Database connection problems</li>
<li aria-level="1">PHP version incompatibility</li>
<li aria-level="1">.htaccess file errors</li>
<li aria-level="1">Syntax errors in PHP code</li>
</ol>
<p>Here are some common causes and solutions:</p>
<ol>
<li aria-level="1">PHP Memory Limit:
<ul>
<li aria-level="2">Increase PHP memory limit in wp-config.php file</li>
<li aria-level="2">Add: define(&#8216;WP_MEMORY_LIMIT&#8217;, &#8216;256M&#8217;);</li>
</ul>
</li>
<li aria-level="1">Plugin Conflicts:
<ul>
<li aria-level="2">Deactivate all plugins</li>
<li aria-level="2">Reactivate one by one to identify the problematic plugin</li>
</ul>
</li>
<li aria-level="1">Theme Issues:
<ul>
<li aria-level="2">Switch to a default WordPress theme</li>
<li aria-level="2">Check if the issue persists</li>
</ul>
</li>
<li aria-level="1">Corrupted WordPress Core Files:
<ul>
<li aria-level="2">Re-upload fresh WordPress core files</li>
</ul>
</li>
<li aria-level="1">Database Connection Errors:
<ul>
<li aria-level="2">Verify database credentials in wp-config.php</li>
</ul>
</li>
<li aria-level="1">PHP Version Incompatibility:
<ul>
<li aria-level="2">Ensure your hosting supports the minimum required PHP version</li>
</ul>
</li>
<li aria-level="1">.htaccess File Errors:
<ul>
<li aria-level="2">Rename or delete the .htaccess file</li>
<li aria-level="2">Generate a new one through WordPress settings</li>
</ul>
</li>
<li aria-level="1">Syntax Errors:
<ul>
<li aria-level="2">Check recently modified files for syntax errors</li>
<li aria-level="2">Use FTP to access and edit files if necessary</li>
</ul>
</li>
<li aria-level="1">Hosting Issues:
<ul>
<li aria-level="2">Contact your hosting provider for server-side problems</li>
</ul>
</li>
</ol>
<p>Remember to back up your site before making any changes. If you&#8217;re not comfortable with these steps, consider seeking help from a <a href="https://web321.co/our-services/website-maintenance/">WordPress professional</a>.</p>
<p>The post <a href="https://web321.co/what-causes-a-blank-white-screen/">What Causes a Blank White Screen?</a> appeared first on <a href="https://web321.co">Web321: Your Best WordPress Support</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Upgrading to PHP8: Why You Should Upgrade Your WordPress Server</title>
		<link>https://web321.co/upgrading-to-php8-why-you-should-upgrade-your-wordpress-server/</link>
		
		<dc:creator><![CDATA[Shawn DeWolfe]]></dc:creator>
		<pubDate>Wed, 06 Sep 2023 18:08:04 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[PHP8]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://web321.co/?p=57015</guid>

					<description><![CDATA[<p>In a world where tech never stops evolving, staying current is crucial for both optimal user experience and robust security. PHP, the engine behind WordPress, has transitioned through versions 5.x, 6.x, and 7.x, and now stands at version 8.</p>
<p>The post <a href="https://web321.co/upgrading-to-php8-why-you-should-upgrade-your-wordpress-server/">Upgrading to PHP8: Why You Should Upgrade Your WordPress Server</a> appeared first on <a href="https://web321.co">Web321: Your Best WordPress Support</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In a world where tech never stops evolving, staying current is crucial for both optimal user experience and robust security. PHP, the engine behind WordPress, has transitioned through versions 5.x, 6.x, and 7.x, and now stands at version 8. Many are using the sub-version, 8.2. PHP8 brings a host of improvements and compelling features that we&#8217;ll delve into. Importantly, support for older PHP versions will cease on November 28, 2022.</p>
<h2>Why It’s Time to Move On</h2>
<h3>Elevating Security Measures</h3>
<p>The foremost incentive for migrating to PHP 8 is to guarantee that your WordPress platform runs on a version that regularly receives updates and security patches. Unsupported versions of PHP lack these critical updates, leaving your web applications vulnerable to security risks. Thus, it&#8217;s wise to confirm whether your hosting provider offers the most recent PHP versions before deploying a web application.</p>
<h3>Ensuring Compatibility</h3>
<p>Another compelling reason to embrace the latest PHP version is to avoid the pitfalls of incompatibility. Operating on outdated versions could jeopardize the functionality of your website—a major concern for any web developer. Supported versions of PHP are continually refined and monitored to fix any issues or vulnerabilities, making it imperative to stay abreast of the latest updates.</p>
<h3>Boosting Performance Metrics</h3>
<p>PHP 8 brings a notable increase in performance. For instance, PHP 7.4 enabled systems to execute thrice as many REST API requests per second compared to PHP 5.6. PHP 8 takes this a step further, offering performance that is almost four times better. Refer to the table below for detailed speed scores and REST API performance metrics.</p>
<h2>How To Do The Update To PHP8</h2>
<h3><b>Upgrading PHP: A How-to Guide</b></h3>
<p>Upgrading to a newer PHP version can be a smooth process if you&#8217;re prepared. However, potential challenges such as bugs or failed upgrades can occur.</p>
<h4><b>Pre-Upgrade Checks</b></h4>
<p>First, make sure that your website is compatible with the latest PHP version. You can check this information through your web hosting control panel. If an upgrade is available, you can usually complete it in a few simple steps. Switching to a supported PHP version through the control panel is generally straightforward.</p>
<h4><b>PHP Version Lifespan</b></h4>
<p>Note that a PHP version typically has a lifespan of three years, after which it&#8217;s advisable to move on to a newer version.</p>
<h4>Step 1: Make a backup. Backup your entire site and keep that copy safe.</h4>
<p><b>Use a Backup Plugin</b></p>
<ol>
<li aria-level="1">Backup your WordPress site using a plugin like &#8220;Duplicator&#8221;.</li>
<li aria-level="1">Navigate to your WordPress dashboard, then go to wp-admin &gt; plugins &gt; add new.</li>
<li aria-level="1">Search for “Duplicator.” <i>Side note: Our clients get the use of the Duplicator Pro license. Also, we would do this for our clients.</i></li>
<li aria-level="1">After activation, follow the on-screen instructions to back up your site.</li>
</ol>
<p>With a backup in hand, you can confidently upgrade your PHP version.</p>
<p>Alternatively, some service providers allow the backup and generation of a staging site. If that’s available, try it out.</p>
<h4>Step 2: Make a staging site. Use the backup to make a staging copy of the website.</h4>
<p>Create an identical copy of your website in a staging environment to test the PHP upgrade. Benefits of using a staging site include:</p>
<ul>
<li aria-level="1"><b>Risk Mitigation</b>: Testing on a staging site helps prevent revenue loss or user decline if something goes wrong. It’s also security through obscurity: if a staging site is hard to find, it’s hard to hack.</li>
<li aria-level="1"><b>Thorough Testing</b>: Staging allows for extended testing, reducing the likelihood of overlooking bugs or bugs that only come up from outlier situations.</li>
<li aria-level="1"><b>No Downtime or Glitches</b>: Any issues can be fixed on the staging site first, ensuring your reputation remains intact.</li>
</ul>
<h4>Step 3: Let ‘er rip.</h4>
<p>Update the staging site to PHP 8.1 or 8.2 and then see what breaks. Current code will be ready for PHP8 in most cases. You may see very few issues. If the result is a disaster, make note of all of the errors that came up, then downgrade back to your previous PHP version and proceed cautiously.</p>
<h4>Step 4: Meticulous re-coding.</h4>
<p>If things go wrong with the “Let ‘er rip” approach, you need to do some detective work.</p>
<ul>
<li aria-level="1">Make sure your PHP8 has all of the correct extensions active. Some service providers offer PHP8 but leave many of the extensions inactive.</li>
<li aria-level="1">Make sure WordPress code is current. It will be PHP8 compatible.</li>
<li aria-level="1">Make sure your theme is current. If it isn&#8217;t, contact the developer who made the theme and ask them for a PHP8 compatible version.</li>
<li aria-level="1">Make sure the plugins are current. Again: if they cause issues, take those issues to the respective plugin developers.</li>
<li aria-level="1">Make sure your custom code works. If it doesn’t bring in a developer. (<a href="https://web321.co/contact-us/"><i>we’re developers, FYI</i></a>).</li>
</ul>
<h2>PHP.net list of Changes</h2>
<p>This list of changes and issues comes from <a href="https://www.php.net/manual/en/migration80.incompatible.php">PHP.net</a>:</p>
<div id="migration80.incompatible.core" class="sect2">
<div id="migration80.incompatible.core.other" class="sect3">
<h4 class="title">Other incompatible Changes</h4>
<ul class="itemizedlist">
<li class="listitem">
<p class="para"><code class="literal">match</code> is now a reserved keyword.</p>
</li>
<li class="listitem">
<p class="para"><code class="literal">mixed</code> is now a reserved word, so it cannot be used to name a class, interface or trait, and is also prohibited from being used in namespaces.</p>
</li>
<li class="listitem">
<p class="para">Assertion failures now throw by default. If the old behavior is desired, <code class="code">assert.exception=0</code> can be set in the INI settings.</p>
</li>
<li class="listitem">
<p class="para">Methods with the same name as the class are no longer interpreted as constructors. The <a class="link" href="https://www.php.net/manual/en/language.oop5.decon.php#object.construct">__construct()</a> method should be used instead.</p>
</li>
<li class="listitem">
<p class="para">The ability to call non-static methods statically has been removed. Thus <span class="function"><a class="function" href="https://www.php.net/manual/en/function.is-callable.php">is_callable()</a></span> will fail when checking for a non-static method with a classname (must check with an object instance).</p>
</li>
<li class="listitem">
<p class="para">The <code class="code">(real)</code> and <code class="code">(unset)</code> casts have been removed.</p>
</li>
<li class="listitem">
<p class="para">The <a class="link" href="https://www.php.net/manual/en/errorfunc.configuration.php#ini.track-errors">track_errors</a> ini directive has been removed. This means that <var class="varname">php_errormsg</var> is no longer available. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.error-get-last.php">error_get_last()</a></span> function may be used instead.</p>
</li>
<li class="listitem">
<p class="para">The ability to define case-insensitive constants has been removed. The third argument to <span class="function"><a class="function" href="https://www.php.net/manual/en/function.define.php">define()</a></span> may no longer be <strong><code>true</code></strong>.</p>
</li>
<li class="listitem">
<p class="para">The ability to specify an autoloader using an <span class="function"><a class="function" href="https://www.php.net/manual/en/function.autoload.php">__autoload()</a></span> function has been removed. <span class="function"><a class="function" href="https://www.php.net/manual/en/function.spl-autoload-register.php">spl_autoload_register()</a></span> should be used instead.</p>
</li>
<li class="listitem">
<p class="para">The <code class="parameter">errcontext</code> argument will no longer be passed to custom error handlers set with <span class="function"><a class="function" href="https://www.php.net/manual/en/function.set-error-handler.php">set_error_handler()</a></span>.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.create-function.php">create_function()</a></span> has been removed. Anonymous functions may be used instead.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.each.php">each()</a></span> has been removed. <a class="link" href="https://www.php.net/manual/en/control-structures.foreach.php">foreach</a> or <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.arrayiterator.php">ArrayIterator</a></span> should be used instead.</p>
</li>
<li class="listitem">
<p class="para">The ability to unbind <var class="varname">this</var> from closures that were created from a method, using <span class="methodname"><a class="methodname" href="https://www.php.net/manual/en/closure.fromcallable.php">Closure::fromCallable()</a></span> or <span class="methodname"><a class="methodname" href="https://www.php.net/manual/en/reflectionmethod.getclosure.php">ReflectionMethod::getClosure()</a></span>, has been removed.</p>
</li>
<li class="listitem">
<p class="para">The ability to unbind <var class="varname">this</var> from proper closures that contain uses of <var class="varname">this</var> has also been removed.</p>
</li>
<li class="listitem">
<p class="para">The ability to use <span class="function"><a class="function" href="https://www.php.net/manual/en/function.array-key-exists.php">array_key_exists()</a></span> with objects has been removed. <span class="function"><a class="function" href="https://www.php.net/manual/en/function.isset.php">isset()</a></span> or <span class="function"><a class="function" href="https://www.php.net/manual/en/function.property-exists.php">property_exists()</a></span> may be used instead.</p>
</li>
<li class="listitem">
<p class="para">The behavior of <span class="function"><a class="function" href="https://www.php.net/manual/en/function.array-key-exists.php">array_key_exists()</a></span> regarding the type of the <code class="parameter">key</code> parameter has been made consistent with <span class="function"><a class="function" href="https://www.php.net/manual/en/function.isset.php">isset()</a></span> and normal array access. All key types now use the usual coercions and array/object keys throw a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.typeerror.php">TypeError</a></span>.</p>
</li>
<li class="listitem">
<p class="para">Any array that has a number <span class="replaceable">n</span> as its first numeric key will use <span class="replaceable">n+1</span> for its next implicit key, even if <span class="replaceable">n</span> is negative.</p>
</li>
<li class="listitem">
<p class="para">The default error_reporting level is now <strong><code>E_ALL</code></strong>. Previously it excluded <strong><code>E_NOTICE</code></strong> and <strong><code>E_DEPRECATED</code></strong>.</p>
</li>
<li class="listitem">
<p class="para"><a class="link" href="https://www.php.net/manual/en/errorfunc.configuration.php#ini.display-startup-errors">display_startup_errors</a> is now enabled by default.</p>
</li>
<li class="listitem">
<p class="para">Using <span class="type"><span class="type parent">parent</span></span> inside a class that has no parent will now result in a fatal compile-time error.</p>
</li>
<li class="listitem">
<p class="para">The <code class="literal">@</code> operator will no longer silence fatal errors (<strong><code>E_ERROR</code></strong>, <strong><code>E_CORE_ERROR</code></strong>, <strong><code>E_COMPILE_ERROR</code></strong>, <strong><code>E_USER_ERROR</code></strong>, <strong><code>E_RECOVERABLE_ERROR</code></strong>, <strong><code>E_PARSE</code></strong>). Error handlers that expect error_reporting to be <code class="literal">0</code> when <code class="literal">@</code> is used, should be adjusted to use a mask check instead:</p>
<div class="example-contents">
<div class="phpcode"><code>&lt;?php<br />
// Replace<br />
function my_error_handler($err_no, $err_msg, $filename, $linenum) {<br />
if (error_reporting() == 0) {<br />
return false;<br />
}<br />
// ...<br />
}</code></div>
</div>
<p>// With<br />
function my_error_handler($err_no, $err_msg, $filename, $linenum) {<br />
if (!(error_reporting() &amp; $err_no)) {<br />
return false;<br />
}<br />
// &#8230;<br />
}<br />
?&gt;</li>
</ul>
</div>
</div>
<p class="para">Additionally, care should be taken that error messages are not displayed in production environments, which can result in information leaks. Please ensure that <code class="code">display_errors=Off</code> is used in conjunction with error logging.</p>
<ul>
<li class="listitem">
<p class="para"><code class="literal">#[</code> is no longer interpreted as the start of a comment, as this syntax is now used for attributes.</p>
</li>
<li class="listitem">
<p class="para">Inheritance errors due to incompatible method signatures (LSP violations) will now always generate a fatal error. Previously a warning was generated in some cases.</p>
</li>
<li class="listitem">
<p class="para">The precedence of the concatenation operator has changed relative to bitshifts and addition as well as subtraction.</p>
<div class="example-contents">
<div class="phpcode"><code>&lt;?php<br />
echo "Sum: " . $a + $b;<br />
// was previously interpreted as:<br />
echo ("Sum: " . $a) + $b;<br />
// is now interpreted as:<br />
echo "Sum:" . ($a + $b);<br />
?&gt;</code></div>
</div>
</li>
<li class="listitem">
<p class="para">Arguments with a default value that resolves to <strong><code>null</code></strong> at runtime will no longer implicitly mark the argument type as nullable. Either an explicit nullable type, or an explicit <strong><code>null</code></strong> default value has to be used instead.</p>
<div class="example-contents">
<div class="phpcode"><code>&lt;?php<br />
// Replace<br />
function test(int $arg = CONST_RESOLVING_TO_NULL) {}<br />
// With<br />
function test(?int $arg = CONST_RESOLVING_TO_NULL) {}<br />
// Or<br />
function test(int $arg = null) {}<br />
?&gt;</code></div>
</div>
</li>
<li class="listitem">
<p class="para">A number of warnings have been converted into <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.error.php">Error</a></span> exceptions:</p>
<ul class="simplelist">
<li class="member">Attempting to write to a property of a non-object. Previously this implicitly created an stdClass object for null, false and empty strings.</li>
<li class="member">Attempting to append an element to an array for which the PHP_INT_MAX key is already used.</li>
<li class="member">Attempting to use an invalid type (array or object) as an array key or string offset.</li>
<li class="member">Attempting to write to an array index of a scalar value.</li>
<li class="member">Attempting to unpack a non-array/Traversable.</li>
<li class="member">Attempting to access unqualified constants which are undefined. Previously, unqualified constant accesses resulted in a warning and were interpreted as strings.</li>
<li class="member">Passing the wrong number of arguments to a non-variadic built-in function will throw an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.argumentcounterror.php">ArgumentCountError</a></span>.</li>
</ul>
<p class="para">A number of notices have been converted into warnings:</p>
<ul class="simplelist">
<li class="member">Attempting to read an undefined variable.</li>
<li class="member">Attempting to read an undefined property.</li>
<li class="member">Attempting to read an undefined array key.</li>
<li class="member">Attempting to read a property of a non-object.</li>
<li class="member">Attempting to access an array index of a non-array.</li>
<li class="member">Attempting to convert an array to string.</li>
<li class="member">Attempting to use a resource as an array key.</li>
<li class="member">Attempting to use null, a boolean, or a float as a string offset.</li>
<li class="member">Attempting to read an out-of-bounds string offset.</li>
<li class="member">Attempting to assign an empty string to a string offset.</li>
</ul>
</li>
<li class="listitem">
<p class="para">Attempting to assign multiple bytes to a string offset will now emit a warning.</p>
</li>
<li class="listitem">
<p class="para">Unexpected characters in source files (such as NUL bytes outside of strings) will now result in a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.parseerror.php">ParseError</a></span> exception instead of a compile warning.</p>
</li>
<li class="listitem">
<p class="para">Uncaught exceptions now go through &#8220;clean shutdown&#8221;, which means that destructors will be called after an uncaught exception.</p>
</li>
<li class="listitem">
<p class="para">The compile time fatal error &#8220;Only variables can be passed by reference&#8221; has been delayed until runtime, and converted into an &#8220;Argument cannot be passed by reference&#8221; <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.error.php">Error</a></span> exception.</p>
</li>
<li class="listitem">
<p class="para">Some &#8220;Only variables should be passed by reference&#8221; notices have been converted to &#8220;Argument cannot be passed by reference&#8221; exception.</p>
</li>
<li class="listitem">
<p class="para">The generated name for anonymous classes has changed. It will now include the name of the first parent or interface:</p>
<div class="example-contents">
<div class="phpcode"><code>&lt;?php<br />
new class extends ParentClass {};<br />
// -&gt; ParentClass@anonymous<br />
new class implements FirstInterface, SecondInterface {};<br />
// -&gt; FirstInterface@anonymous<br />
new class {};<br />
// -&gt; class@anonymous<br />
?&gt;</code></div>
</div>
<p class="para">The name shown above is still followed by a NUL byte and a unique suffix.</p>
</li>
<li class="listitem">
<p class="para">Non-absolute trait method references in trait alias adaptations are now required to be unambiguous:</p>
<div class="example-contents">
<div class="phpcode"><code>&lt;?php<br />
class X {<br />
use T1, T2 {<br />
func as otherFunc;<br />
}<br />
function func() {}<br />
}<br />
?&gt;</code></div>
</div>
<p class="para">If both <code class="code">T1::func()</code> and <code class="code">T2::func()</code> exist, this code was previously silently accepted, and func was assumed to refer to <code class="code">T1::func</code>. Now it will generate a fatal error instead, and either <code class="code">T1::func</code> or <code class="code">T2::func</code> needs to be written explicitly.</p>
</li>
<li class="listitem">
<p class="para">The signature of abstract methods defined in traits is now checked against the implementing class method:</p>
<div class="example-contents">
<div class="phpcode"><code>&lt;?php<br />
trait MyTrait {<br />
abstract private function neededByTrait(): string;<br />
}</code></div>
</div>
<p>class MyClass {<br />
use MyTrait;</p>
<p>// Error, because of return type mismatch.<br />
private function neededByTrait(): int { return 42; }<br />
}<br />
?&gt;</li>
<li class="listitem">
<p class="para">Disabled functions are now treated exactly like non-existent functions. Calling a disabled function will report it as unknown, and redefining a disabled function is now possible.</p>
</li>
<li class="listitem">
<p class="para"><code class="literal">data://</code> stream wrappers are no longer writable, which matches the documented behavior.</p>
</li>
<li class="listitem">
<p class="para">The arithmetic and bitwise operators <code class="literal">+</code>, <code class="literal">-</code>, <code class="literal">*</code>, <code class="literal">/</code>, <code class="literal">**</code>, <code class="literal">%</code>, <code class="literal">&lt;&lt;</code>, <code class="literal">&gt;&gt;</code>, <code class="literal">&amp;</code>, <code class="literal">|</code>, <code class="literal">^</code>, <code class="literal">~</code>, <code class="literal">++</code>, <code class="literal">--</code> will now consistently throw a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.typeerror.php">TypeError</a></span> when one of the operands is an <span class="type">array</span>, <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a> or non-overloaded <span class="type">object</span>. The only exception to this is the array <code class="literal">+</code> array merge operation, which remains supported.</p>
</li>
<li class="listitem">
<p class="para">Float to string casting will now always behave locale-independently.</p>
<div class="example-contents">
<div class="phpcode"><code>&lt;?php<br />
setlocale(LC_ALL, "de_DE");<br />
$f = 3.14;<br />
echo $f, "\n";<br />
// Previously: 3,14<br />
// Now:        3.14<br />
?&gt;</code></div>
</div>
<p class="para">See <span class="function"><a class="function" href="https://www.php.net/manual/en/function.printf.php">printf()</a></span>, <span class="function"><a class="function" href="https://www.php.net/manual/en/function.number-format.php">number_format()</a></span> and <span class="methodname"><strong>NumberFormatter()</strong></span> for ways to customize number formatting.</p>
</li>
<li class="listitem">
<p class="para">Support for deprecated curly braces for offset access has been removed.</p>
<div class="example-contents">
<div class="phpcode"><code>&lt;?php<br />
// Instead of:<br />
$array{0};<br />
$array{"key"};<br />
// Write:<br />
$array[0];<br />
$array["key"];<br />
?&gt;</code></div>
</div>
</li>
<li class="listitem">
<p class="para">Applying the final modifier on a private method will now produce a warning unless that method is the constructor.</p>
</li>
<li class="listitem">
<p class="para">If an object constructor <span class="function"><a class="function" href="https://www.php.net/manual/en/function.exit.php">exit()</a></span>s, the object destructor will no longer be called. This matches the behavior when the constructor throws.</p>
</li>
<li class="listitem">
<p class="para">Namespaced names can no longer contain whitespace: While <code class="code">Foo\Bar</code> will be recognized as a namespaced name, <code class="code">Foo \ Bar</code> will not. Conversely, reserved keywords are now permitted as namespace segments, which may also change the interpretation of code: <code class="code">new\x</code> is now the same as <code class="code">constant('new\x')</code>, not <code class="code">new \x()</code>.</p>
</li>
<li class="listitem">
<p class="para">Nested ternaries now require explicit parentheses.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.debug-backtrace.php">debug_backtrace()</a></span> and <span class="methodname"><a class="methodname" href="https://www.php.net/manual/en/exception.gettrace.php">Exception::getTrace()</a></span> will no longer provide references to arguments. It will not be possible to change function arguments through the backtrace.</p>
</li>
<li class="listitem">
<p class="para">Numeric string handling has been altered to be more intuitive and less error-prone. Trailing whitespace is now allowed in numeric strings for consistency with how leading whitespace is treated. This mostly affects:</p>
<ul class="simplelist">
<li class="member">The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.is-numeric.php">is_numeric()</a></span> function</li>
<li class="member">String-to-string comparisons</li>
<li class="member">Type declarations</li>
<li class="member">Increment and decrement operations</li>
</ul>
<p class="para">The concept of a &#8220;leading-numeric string&#8221; has been mostly dropped; the cases where this remains exist in order to ease migration. Strings which emitted an <strong><code>E_NOTICE</code></strong> &#8220;A non well-formed numeric value encountered&#8221; will now emit an <strong><code>E_WARNING</code></strong> &#8220;A non-numeric value encountered&#8221; and all strings which emitted an <strong><code>E_WARNING</code></strong> &#8220;A non-numeric value encountered&#8221; will now throw a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.typeerror.php">TypeError</a></span>. This mostly affects:</p>
<ul class="simplelist">
<li class="member">Arithmetic operations</li>
<li class="member">Bitwise operations</li>
</ul>
<p class="para">This <strong><code>E_WARNING</code></strong> to <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.typeerror.php">TypeError</a></span> change also affects the <strong><code>E_WARNING</code></strong> &#8220;Illegal string offset &#8216;string'&#8221; for illegal string offsets. The behavior of explicit casts to int/float from strings has not been changed.</p>
</li>
<li class="listitem">
<p class="para">Magic Methods will now have their arguments and return types checked if they have them declared. The signatures should match the following list:</p>
<ul class="simplelist">
<li class="member"><code class="code">__call(string $name, array $arguments): mixed</code></li>
<li class="member"><code class="code">__callStatic(string $name, array $arguments): mixed</code></li>
<li class="member"><code class="code">__clone(): void</code></li>
<li class="member"><code class="code">__debugInfo(): ?array</code></li>
<li class="member"><code class="code">__get(string $name): mixed</code></li>
<li class="member"><code class="code">__invoke(mixed $arguments): mixed</code></li>
<li class="member"><code class="code">__isset(string $name): bool</code></li>
<li class="member"><code class="code">__serialize(): array</code></li>
<li class="member"><code class="code">__set(string $name, mixed $value): void</code></li>
<li class="member"><code class="code">__set_state(array $properties): object</code></li>
<li class="member"><code class="code">__sleep(): array</code></li>
<li class="member"><code class="code">__unserialize(array $data): void</code></li>
<li class="member"><code class="code">__unset(string $name): void</code></li>
<li class="member"><code class="code">__wakeup(): void</code></li>
</ul>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.call-user-func-array.php">call_user_func_array()</a></span> array keys will now be interpreted as parameter names, instead of being silently ignored.</p>
</li>
<li class="listitem">
<p class="para">Declaring a function called <code class="literal">assert()</code> inside a namespace is no longer allowed, and issues <strong><code>E_COMPILE_ERROR</code></strong>. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.assert.php">assert()</a></span> function is subject to special handling by the engine, which may lead to inconsistent behavior when defining a namespaced function with the same name.</p>
</li>
</ul>
<div id="migration80.incompatible.resource2object" class="sect2">
<h3 class="title">Resource to Object Migration<a class="genanchor" href="https://www.php.net/manual/en/migration80.incompatible.php#migration80.incompatible.resource2object"> ¶</a></h3>
<p class="para">Several <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>s have been migrated to <span class="type">object</span>s. Return value checks using <span class="function"><a class="function" href="https://www.php.net/manual/en/function.is-resource.php">is_resource()</a></span> should be replaced with checks for <strong><code>false</code></strong>.</p>
<ul class="itemizedlist">
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.curl-init.php">curl_init()</a></span> will now return a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.curlhandle.php">CurlHandle</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.curl-close.php">curl_close()</a></span> function no longer has an effect, instead the <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.curlhandle.php">CurlHandle</a></span> instance is automatically destroyed if it is no longer referenced.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.curl-multi-init.php">curl_multi_init()</a></span> will now return a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.curlmultihandle.php">CurlMultiHandle</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.curl-multi-close.php">curl_multi_close()</a></span> function no longer has an effect, instead the <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.curlmultihandle.php">CurlMultiHandle</a></span> instance is automatically destroyed if it is no longer referenced.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.curl-share-init.php">curl_share_init()</a></span> will now return a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.curlsharehandle.php">CurlShareHandle</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.curl-share-close.php">curl_share_close()</a></span> function no longer has an effect, instead the <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.curlsharehandle.php">CurlShareHandle</a></span> instance is automatically destroyed if it is no longer referenced.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.enchant-broker-init.php">enchant_broker_init()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.enchantbroker.php">EnchantBroker</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.enchant-broker-request-dict.php">enchant_broker_request_dict()</a></span> and <span class="function"><a class="function" href="https://www.php.net/manual/en/function.enchant-broker-request-pwl-dict.php">enchant_broker_request_pwl_dict()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.enchantdictionary.php">EnchantDictionary</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>.</p>
</li>
<li class="listitem">
<p class="para">The GD extension now uses <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.gdimage.php">GdImage</a></span> objects as the underlying data structure for images, rather than <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>s. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.imagedestroy.php">imagedestroy()</a></span> function no longer has an effect; instead the <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.gdimage.php">GdImage</a></span> instance is automatically destroyed if it is no longer referenced.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.openssl-x509-read.php">openssl_x509_read()</a></span> and <span class="function"><a class="function" href="https://www.php.net/manual/en/function.openssl-csr-sign.php">openssl_csr_sign()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.opensslcertificate.php">OpenSSLCertificate</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.openssl-x509-free.php">openssl_x509_free()</a></span> function is deprecated and no longer has an effect, instead the <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.opensslcertificate.php">OpenSSLCertificate</a></span> instance is automatically destroyed if it is no longer referenced.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.openssl-csr-new.php">openssl_csr_new()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.opensslcertificatesigningrequest.php">OpenSSLCertificateSigningRequest</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.openssl-pkey-new.php">openssl_pkey_new()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.opensslasymmetrickey.php">OpenSSLAsymmetricKey</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.openssl-pkey-free.php">openssl_pkey_free()</a></span> function is deprecated and no longer has an effect, instead the <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.opensslasymmetrickey.php">OpenSSLAsymmetricKey</a></span> instance is automatically destroyed if it is no longer referenced.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.shmop-open.php">shmop_open()</a></span> will now return a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.shmop.php">Shmop</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.shmop-close.php">shmop_close()</a></span> function no longer has an effect, and is deprecated; instead the <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.shmop.php">Shmop</a></span> instance is automatically destroyed if it is no longer referenced.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.socket-create.php">socket_create()</a></span>, <span class="function"><a class="function" href="https://www.php.net/manual/en/function.socket-create-listen.php">socket_create_listen()</a></span>, <span class="function"><a class="function" href="https://www.php.net/manual/en/function.socket-accept.php">socket_accept()</a></span>, <span class="function"><a class="function" href="https://www.php.net/manual/en/function.socket-import-stream.php">socket_import_stream()</a></span>, <span class="function"><a class="function" href="https://www.php.net/manual/en/function.socket-addrinfo-connect.php">socket_addrinfo_connect()</a></span>, <span class="function"><a class="function" href="https://www.php.net/manual/en/function.socket-addrinfo-bind.php">socket_addrinfo_bind()</a></span>, and <span class="function"><a class="function" href="https://www.php.net/manual/en/function.socket-wsaprotocol-info-import.php">socket_wsaprotocol_info_import()</a></span> will now return a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.socket.php">Socket</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>. <span class="function"><a class="function" href="https://www.php.net/manual/en/function.socket-addrinfo-lookup.php">socket_addrinfo_lookup()</a></span> will now return an array of <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.addressinfo.php">AddressInfo</a></span> objects rather than <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>s.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.msg-get-queue.php">msg_get_queue()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.sysvmessagequeue.php">SysvMessageQueue</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.sem-get.php">sem_get()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.sysvsemaphore.php">SysvSemaphore</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.shm-attach.php">shm_attach()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.sysvsharedmemory.php">SysvSharedMemory</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.xml-parser-create.php">xml_parser_create()</a></span> and <span class="function"><a class="function" href="https://www.php.net/manual/en/function.xml-parser-create-ns.php">xml_parser_create_ns()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.xmlparser.php">XMLParser</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>. The <span class="function"><a class="function" href="https://www.php.net/manual/en/function.xml-parser-free.php">xml_parser_free()</a></span> function no longer has an effect, instead the XMLParser instance is automatically destroyed if it is no longer referenced.</p>
</li>
<li class="listitem">
<p class="para">The <a class="link" href="https://www.php.net/manual/en/book.xmlwriter.php">XMLWriter</a> functions now accept and return, respectively, <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.xmlwriter.php">XMLWriter</a></span> objects instead of <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>s.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.inflate-init.php">inflate_init()</a></span> will now return an <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.inflatecontext.php">InflateContext</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>.</p>
</li>
<li class="listitem">
<p class="para"><span class="function"><a class="function" href="https://www.php.net/manual/en/function.deflate-init.php">deflate_init()</a></span> will now return a <span class="classname"><a class="classname" href="https://www.php.net/manual/en/class.deflatecontext.php">DeflateContext</a></span> object rather than a <a class="link" href="https://www.php.net/manual/en/language.types.resource.php">resource</a>.</p>
</li>
</ul>
</div>
<p>The post <a href="https://web321.co/upgrading-to-php8-why-you-should-upgrade-your-wordpress-server/">Upgrading to PHP8: Why You Should Upgrade Your WordPress Server</a> appeared first on <a href="https://web321.co">Web321: Your Best WordPress Support</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ultimate Lists: How To Use Shortcodes Ultimate to Build Great Lists In WordPress</title>
		<link>https://web321.co/ultimate-lists-how-to-use-shortcodes-ultimate-to-build-great-lists-in-wordpress/</link>
		
		<dc:creator><![CDATA[Shawn DeWolfe]]></dc:creator>
		<pubDate>Mon, 27 Mar 2023 16:11:26 +0000</pubDate>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Shortcodes Ultimate]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://web321.co/?p=55797</guid>

					<description><![CDATA[<p>Shortcodes Ultimate is a popular WordPress plugin that provides a variety of shortcodes that allow users to add various functionality and design elements to their website. One of the most useful shortcodes in the plugin is the su_post shortcode, which allows users to display posts on their website with customizable options. In this article, we [&#8230;]</p>
<p>The post <a href="https://web321.co/ultimate-lists-how-to-use-shortcodes-ultimate-to-build-great-lists-in-wordpress/">Ultimate Lists: How To Use Shortcodes Ultimate to Build Great Lists In WordPress</a> appeared first on <a href="https://web321.co">Web321: Your Best WordPress Support</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Shortcodes Ultimate is a popular WordPress plugin that provides a variety of shortcodes that allow users to add various functionality and design elements to their website. One of the most useful shortcodes in the plugin is the su_post shortcode, which allows users to display posts on their website with customizable options.</p>
<p>In this article, we will go over how to use the su_post shortcode, including its syntax, available attributes, and some examples of how to use it.</p>
<h2><b>Syntax of su_post Shortcode</b></h2>
<p>To display a post using the su_post shortcode, you would use the following syntax:</p>
<pre>Ultimate Lists: How To Use Shortcodes Ultimate to Build Great Lists In WordPress</pre>
<p>&#8220;post_ID&#8221; is the ID number of the post you want to display.</p>
<h2><b>Attributes of su_post Shortcode</b></h2>
<p>The su_post shortcode has a number of attributes that you can use to customize the way your posts are displayed. Here are the available attributes:</p>
<h3><b>id</b></h3>
<p>The &#8220;id&#8221; attribute is required for the su_post shortcode, as it specifies which post to display. To use this attribute, you need to replace &#8220;post_ID&#8221; in the basic syntax with the actual ID number of the post you want to display.</p>
<p>For example, if the ID number of the post you want to display is 123, you would use the following code:</p>
<pre>Ultimate Lists: How To Use Shortcodes Ultimate to Build Great Lists In WordPress</pre>
<h3><b>post_type</b></h3>
<p>By default, the su_post shortcode displays posts from the &#8220;post&#8221; post type. However, you can use the &#8220;post_type&#8221; attribute to display posts from other post types, such as &#8220;page&#8221; or a custom post type.</p>
<p>To use this attribute, simply add it to the shortcode and set its value to the post type you want to display. For example, to display a page with ID 456, you would use the following code:</p>
<pre>Ultimate Lists: How To Use Shortcodes Ultimate to Build Great Lists In WordPress</pre>
<h3><b>class</b></h3>
<p>The &#8220;class&#8221; attribute allows you to add custom CSS classes to the HTML elements generated by the shortcode. This can be useful for styling the output of the shortcode with CSS.</p>
<p>To use this attribute, simply add it to the shortcode and set its value to the CSS class(es) you want to use. For example, to add the class &#8220;my-custom-class&#8221; to the output of the shortcode, you would use the following code:</p>
<pre>Ultimate Lists: How To Use Shortcodes Ultimate to Build Great Lists In WordPress</pre>
<h3><b>template</b></h3>
<p><img decoding="async" class="alignright wp-image-55798 size-medium" src="https://web321co.b-cdn.net/wp-content/uploads/2023/03/Screenshot-2023-03-19-at-19-20-09-Site-Tools-300x136.png" alt="" width="300" height="136" srcset="https://web321co.b-cdn.net/wp-content/uploads/2023/03/Screenshot-2023-03-19-at-19-20-09-Site-Tools-300x136.png 300w, https://web321co.b-cdn.net/wp-content/uploads/2023/03/Screenshot-2023-03-19-at-19-20-09-Site-Tools-480x217.png 480w, https://web321co.b-cdn.net/wp-content/uploads/2023/03/Screenshot-2023-03-19-at-19-20-09-Site-Tools-2x1.png 2w, https://web321co.b-cdn.net/wp-content/uploads/2023/03/Screenshot-2023-03-19-at-19-20-09-Site-Tools.png 563w" sizes="(max-width: 300px) 100vw, 300px" />The &#8220;template&#8221; attribute allows you to use a custom template file to display the post. This can be useful if you want to display posts in a specific way that is not possible with the default output of the shortcode.</p>
<p>To use this attribute, simply add it to the shortcode and set its value to the file path of the template you want to use. For example, to use a template file called &#8220;news-loop.php&#8221; located in your theme&#8217;s directory, you would use the following code:</p>
<pre>Ultimate Lists: How To Use Shortcodes Ultimate to Build Great Lists In WordPress</pre>
<pre>&lt;ul class="su-posts su-posts-news-loop"&gt;
&lt;?php
// Posts are found
if (isset($args['data'])) {
$posts = $args['data'];
}
if ( $posts-&gt;have_posts() ) {
$cat_singular = array(
'blog' =&gt; 'Blog',
'case-study' =&gt; 'Case Study',
'company-update' =&gt; 'Company Update', 
'new' =&gt; 'News',
'resources' =&gt; 'Resources',
'videos' =&gt; 'Videos'
);

$cat_css = array(
'blog' =&gt; 'blog',
'case-study' =&gt; 'case-study',
'company-update' =&gt; 'company-update', 
'new' =&gt; 'news',
'resources' =&gt; 'resource',
'videos' =&gt; 'video'
);

$cat_img = array(
'blog' =&gt; '/wp-content/themes/CustomTheme/assets/img/article-sm.png', n
'articles-whitepapers' =&gt; '/wp-content/themes/CustomTheme/assets/img/article-sm.png',
'case-studies' =&gt; '/wp-content/themes/CustomTheme/assets/img/case_study-sm.png',
'new' =&gt; '/wp-content/themes/CustomTheme/assets/img/article-sm.png',
'resources' =&gt; '/wp-content/themes/CustomTheme/assets/img/article-sm.png',
'videos' =&gt; '/wp-content/themes/CustomTheme/assets/img/video-sm.png'
); 


$roundout = 0;
while ( $posts-&gt;have_posts() ) {
$posts-&gt;the_post();
global $post;

$singular = 'N/A';
$css = 'na'; 
$roundout++;

$categories = get_the_category(); 
$tags = get_the_tags(); 

// print print_r($categories, TRUE);

// should be one per...
foreach ($categories as $cat) {
if (array_key_exists($cat-&gt;slug, $cat_singular)) {
$cat_slug = $cat-&gt;slug; 
$singular = $cat_singular[$cat_slug];
if (isset($cat_css[$cat_slug])) {
$css = $cat_css[$cat_slug];
} 
else {
$css = '';
}
if (isset($cat_img[$cat_slug])) {
$img = $cat_img[$cat_slug];
} 
else {
$img = '';
}

break;
}
}
// get all tags
$tag_list = "";
$comma = "";
if ($tags) {
foreach ($tags as $tag) {
$tag_list .= $comma.'&lt;a href="' . esc_attr( get_tag_link( $tag-&gt;term_id ) ) . '"&gt;' . __( $tag-&gt;name ) . '&lt;/a&gt;';
$comma = ", ";
}
} 
?&gt;
&lt;li id="su-post-&lt;?php the_ID(); ?&gt;" class="su-post &lt;?php print $css; ?&gt;-grid"&gt;&lt;a href="&lt;?php the_permalink(); ?&gt;"&gt;
&lt;?php if ($loop_thumb = get_the_post_thumbnail_url() ) { ?&gt;
&lt;div class="su-top" style="background-image: url('&lt;?php echo $loop_thumb; ?&gt;');"&gt;
&lt;?php }
else {
?&gt;
&lt;div class="su-top" style="background-color: #888888;"&gt;
&lt;?php } ?&gt;
&lt;img src="/wp-content/uploads/2023/01/blank.png" style="width: 100%; height: 25vh;" /&gt;
&lt;/div&gt;
&lt;div class="su-middle"&gt; 
&lt;h3 class="su-post-title rightarrow"&gt;&lt;a href="&lt;?php the_permalink(); ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;em&gt;&lt;?php echo $tag_list; ?&gt;&lt;/em&gt;
&lt;?php 
if ($excerpt = get_the_excerpt()) {
print "&lt;p&gt;".$excerpt."&lt;/p&gt;"; 
print "&lt;br/&gt;";
}
?&gt;
&lt;?php print $runtime; ?&gt;
&lt;/div&gt; 
&lt;div class="su-bottom"&gt;
&lt;span class="date"&gt;&lt;?php print get_the_date('F j, Y', get_the_ID()) ?&gt;&lt;/span&gt;
&lt;span class="link"&gt;&lt;a class="rightarrow" href="&lt;?php the_permalink(); ?&gt;"&gt;Link&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;/li&gt;
&lt;?php
}
}
// Posts not found
else {
?&gt;
&lt;li&gt;&lt;?php _e( 'No Results', 'shortcodes-ultimate' ) ?&gt;&lt;/li&gt;
&lt;?php
}
?&gt;
&lt;/ul&gt;
</pre>
<p><img fetchpriority="high" decoding="async" class="alignleft wp-image-55799" src="https://web321co.b-cdn.net/wp-content/uploads/2023/03/Screenshot-2023-03-19-at-19-18-16-Learn-Blogs-Case-Studies-Accessibility-Guides-Polara.png" alt="" width="215" height="360" />The news-loop.php goes into the templates sub-directory of the site’s active theme. When the template loops through the su_posts result, the template will handle the output. In our example, the control of the output lets us add more formatting and supporting information.</p>
<p>The su_posts shortcode is a versatile tool that can be used in many different ways to improve the functionality and user experience of your website. Shortcodes Ultimate is a popular WordPress plugin that provides a variety of useful shortcodes for adding various elements to your website.</p>
<p>There are even more advanced ways to make use of the su_post shortcode. Want to know more?</p>
<p>The post <a href="https://web321.co/ultimate-lists-how-to-use-shortcodes-ultimate-to-build-great-lists-in-wordpress/">Ultimate Lists: How To Use Shortcodes Ultimate to Build Great Lists In WordPress</a> appeared first on <a href="https://web321.co">Web321: Your Best WordPress Support</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress: How Popular Is It?</title>
		<link>https://web321.co/wordpress-how-popular-is-it/</link>
		
		<dc:creator><![CDATA[Shawn DeWolfe]]></dc:creator>
		<pubDate>Tue, 15 Sep 2020 07:49:37 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Stats]]></category>
		<guid isPermaLink="false">https://web321.co/?p=3850</guid>

					<description><![CDATA[<p>WordPress has become a global marvel and it has taken a long leap since its release in 2003. From the 1st version of WordPress in 2003, it has been growing considerably even today. Being the most superior CMS in this industry, WordPress stands above its rival brands and constitutes a good amount of market share. [&#8230;]</p>
<p>The post <a href="https://web321.co/wordpress-how-popular-is-it/">WordPress: How Popular Is It?</a> appeared first on <a href="https://web321.co">Web321: Your Best WordPress Support</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress has become a global marvel and it has taken a long leap since its release in 2003. From the 1st version of WordPress in 2003, it has been growing considerably even today. </span></p>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Being the most superior CMS in this industry, <a href="https://web321.co/knowledgebase/wordpress/">WordPress</a> stands above its rival brands and constitutes a good amount of market share. The sheer scope and size of the impact of WordPress are huge, which is why we have gathered some shocking stats to help you put into perspective. </span></p>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The Project Cost Calculator of Open Hub claims that WordPress took approximately 112 person-years to build itself with 423,759 lines of code and an approximate cost of $6 million to fund the size of this project. </span></p>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The WordPress platform is a simple and free content management system that involves varying levels of technical knowledge to develop impressive and innovative websites and web content. The boundless library of plugins and themes boosts the possibility of this platform. </span></p>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">If you want to make an online appearance today, you can follow the WordPress stats that can help you to gain an online presence. The following are the important WordPress stats in 2020 that you may need to know –</span></p>
<ul>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress powers 35 percent of the internet with a 2 percent surge in contrast with early 2019 and a 4 percent increase compared to 2019. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">If you consider the sites built by only CMS, around 60 percent of the CMS-built sites are WordPress. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Around 661 WordPress websites pop up every day. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Back in 2018, non-English WordPress downloads outpaced the English ones. </span></li>
</ul>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">These numbers are facts that are important since WordPress plays a vital role in the online marketing environment. </span></p>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The capabilities and contribution of this platform have motivated others to level their playing field and compete. The central determiner of the effectiveness of this platform is not the net worth but their creativity. This is why it is possible for small businesses to compete with global companies who enjoy major marketing budgets. </span></p>
<ul>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">59% of websites using well-known content management systems are using WordPress. There are around 46.2 percent sites globally that do not use a CMS and the rest depend on WordPress. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">There are 64 million websites that employ WordPress in absolute measures. This stat is based on the global count of active sites, according to the Netcraft. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress is accountable for the added 1.1 million domain registration every half-yearly. This stat is an estimated value from 2015. The actual value is likely to be more since the level of market penetration and domain registration of WordPress have risen.</span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Around 34 percent of the 10,000 most famous websites across the world use WordPress. These famous sites are Etsy, Reuters, TED, Whitehouse.gov, Yelp, TechCrunch, The New Yorker, and People. Among international celebrities, Snoop Dogg, Justine Bieber, Katy Perry, Jay Z, and Stephen Fry also use this platform. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The second most commonly used CMS, Joomla, constitutes 5.7 percent of the market share. This positively skewed market has many competitors but only one of them has been able to take an enormous lead. Drupal, Shopify, and <a href="https://web321.co/compare-wordpress-wix-squarespace-weebly-webflow-joomla-and-drupal/">Squarespace</a> follow Joomla with market shares of 3.7%, 2.4%, and 2.5%, respectively. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress 4.9 version has been downloaded around 159 million times. When you read this article, WordPress downloads would cross 160 million. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress receives unique monthly visitors the same as Twitter. According to Twitter stats, unique monthly visits are around 152 million in the US but for WordPress, it is around 149 million. Both Amazon (with 199 million visits) and Twitter recently ranked lower than WordPress in terms of unique monthly visitors. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress users create around 52.1 million comments and 70.5 million new posts every month. This blogging platform encourages a huge population across the world to initiate discussions and add fresh content every month. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">A total of 409 million users view at least 21.1 billion pages every month on the popular WordPress sites. For daily content consumption, a higher count of users views WP blogs. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WooCommerce constitutes 27.7 percent of the market share among all eCommerce platforms. This is vital information for all online businesses. Online business platforms let merchants build digital stores to allow transactions online. WooCommerce is an eCommerce platform of WordPress that is growing faster than the competitors such as Shopify and Squarespace.</span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Around 13.2 percent of all sites use WooCommerce. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">7.5 million spam comments are blocked by Akismet every hour. Akismet is a famous WordPress plugin that saves its users who deal with spam. Spam is one of the most common nuisances online today. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">In 2017, the 3 best WordPress plugins were WordPress Importer, WooCommerce, and the All in One SEO Pack. </span></li>
</ul>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The WordPress usability statistics in 2020 are as follows – </span></p>
<ul>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress.com is different from WordPress.org. These 2 versions can be very confusing. The latter is a free and open-source CMS built for the WP software. Whereas, WordPress.com is the blogging platform that is based on the said software.</span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">To host an appreciable WordPress site, it costs as low as $60. At this cost, you also get unmetered bandwidth and sufficient storage. In the case of a high-traffic site, you might have to go for expensive versions such as the managed WordPress hosting. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Being platform-agnostic, WordPress provides native applications for common platforms such as iOS, Windows Phone, WebOS, Android, and even Blackberry. You can use all the functions regardless of what system you are using. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress is currently offering 47,350 active plugins out of a sum of 56,311 plugins listed by the Plugin Directory for WordPress. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Around 80 to 90 percent of the SEO mechanics are taken care of by WordPress. This stat was mentioned by Matt Cutts in 2009 who was the head of Google’s webspam group. The platform is still continuing to make it more SEO-friendly with more plugins to assist its users in getting the SEO right. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">At least 36 percent of WordPress sites are served by HTTPS. This figure denotes an increase of more than double from 2016. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Being the fastest growing web-publishing platform, WordPress helps you to draw more traffic with higher ranks of WordPress keywords than its competitors. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Despite issues, Jetpack is the most accepted WordPress plugin for all marketers. It is a free tool, facilitating vital tasks such as social media integration, traffic insight, security, and backups. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress employs not more than 800 workers worldwide, the majority of which are from the US. They collaborate from their residence and they ensure that the requirements of all countries are met. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress involves more than 100 contributors. Being the world’s one of the biggest open-source platforms, it has 100 contributors in the developer team, containing more than 430,000 lines of codes.</span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Taking 2020 as an exception to the rule, WordPress has helped 128 WordCamps in around 48 countries, involving 1091 sponsors and 2310 speakers in 2017. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">This WP platform has also had 4379 meetups, a surge of 43 percent compared to 2016. Above 99 thousand people attended the meetups which were a whopping rise of 65 percent from 2016. The reason for this upsurge was because of the introduction of the Events widget in the WP 4.8 version. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Some of the amazing WordPress sites are shown at WordPress.org site. The platform showcases the best sites and the list includes names like the </span><em style="background-color: transparent; color: #000000;">City University of New York, the Obama Foundation, and the Houston Zoo. </em></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">A typical WordPress developer earns an average of $50,365 in the US. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress has denied around 61 percent of DMCA takedown notices. This has added transparency to functionality, security, and versatility. DMCA notices are filed by individuals or companies if they find any posts on the platform trespassing on intellectual property rights.</span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WP has also denied around 65 percent of government information requests. WordPress not only cooperates with the government on important and valid cases but also strongly resists circulating information that puts the blogger’s freedom of expression at stake. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The major WordPress versions are released after approximately 152 days. </span></li>
<li class="ql-align-justify"><span style="background-color: transparent; color: #000000;">Most number of downloads on WordPress is done on Wednesdays and least on Fridays. </span></li>
</ul>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">WordPress is one of the most widely known content management systems and blogging platforms. </span></p>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The above WordPress stats prove that the popularity of this platform is not only because of its simplicity and low costs but also other factors such as a wide range of themes and plugins, security, SEO-friendliness, and language packs availability. </span></p>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The popular platform has journeyed a long way. It has evolved from basic and simple blogging too to a global phenomenon, endorsed by some of the biggest brands and popular celebrities. The features of WordPress are particularly helpful for small and medium businesses since it allows the use of high-functioning and attractive websites without having an expert developer or big budget. </span></p>
<p class="ql-align-justify"><span style="background-color: transparent; color: #000000;">The shocking WordPress stats provided in the article prove the capacity of this platform and why it has spread to such a large extent in terms of usability, web standards, security, etc. The WordPress community is flourishing at an increasing rate every day. </span></p>
<hr />
<p class="ql-align-justify"><strong style="background-color: transparent; color: #000000;">References </strong></p>
<p class="ql-align-justify"><a style="background-color: transparent; color: #0000ff;" href="https://www.whoishostingthis.com/compare/wordpress/stats/" target="_blank" rel="noopener noreferrer">https://www.whoishostingthis.com/compare/wordpress/stats/</a></p>
<p class="ql-align-justify"><a style="background-color: transparent; color: #0000ff;" href="https://hostingtribunal.com/blog/wordpress-statistics/#gref" target="_blank" rel="noopener noreferrer">https://hostingtribunal.com/blog/wordpress-statistics/#gref</a></p>
<p class="ql-align-justify"><a style="background-color: transparent; color: #0000ff;" href="https://digital.com/wordpress-hosting/wordpress-stats/" target="_blank" rel="noopener noreferrer">https://digital.com/wordpress-hosting/wordpress-stats/</a></p>
<p class="ql-align-justify">
<p>The post <a href="https://web321.co/wordpress-how-popular-is-it/">WordPress: How Popular Is It?</a> appeared first on <a href="https://web321.co">Web321: Your Best WordPress Support</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
