Jamf Pro & WHD – Make Clients Admin of Their Asset

If you use Jamf Pro and SolarWinds Web Help Desk (WHD), you may be interested in using this Jamf policy script to make WHD asset clients admin of their own assets on login.

Jamf and WHD Requirements

  • Assets in WHD must have accurate serial numbers entered. The script uses the computer serial number to locate the asset in WHD, so WHD assets must have serial numbers.
  • Assets in WHD must have one or more clients assigned to them. Clients assigned to the asset will be added to the ‘admin’ group for that asset on login.
  • The Perl script uses the JSON module, which Apple included in MacOS v11. If the computer uses an older MacOS version, the script will exit with an error. The script uses a BEGIN{} section to handle importing the JSON decode_json() function and exit gracefully if the JSON module is missing.

Continue reading

New Plugin Fixes ‘hasMerchantReturnPolicy’ Warning for WooCommerce Products

2023/06/07 Update: The WPSSO Merchant Return Policy add-on has been approved on wordpress.org – you can find it here.

A new WPSSO Merchant Return Policy Manager (WPSSO MRP) add-on has been released for WPSSO Core.

This new add-on allows you to manage one or more Merchant Return Policies, assign one as the default for your products, and customize individual products for different return policies.

There is currently a 40+ day backlog for new plugins submitted to wordpress.org, so as of now the WPSSO MRP add-on is only available for download directly from WPSSO.com.

WPSSO Core Premium customers can also find the new WPSSO MRP add-on under the SSO > Plugin Add-ons settings page.

Continue reading

What’s New in WPSSO Core v15

The common way to create Schema markup for WooCommerce product variations in the past has been to create multiple Schema offers for a product – one offer per variation. Unfortunately, the Google merchant crawler has always been very unreliable when reading offers, sometimes being able to read product offers, and sometimes not. Even now, after Google added merchant validation to their Rich Results Test tool, it does not guarantee that the Google merchant crawler will be able to read Schema markup as predicted by Google’s test tool.

Some structured data plugins have attempted to work around the limitations of Google merchant’s crawler by offering different Schema markup when query arguments for variation attributes are present in the URL. WooCommerce creates a single webpage for a product (like WordPress does for a single Post or Page), and javascript is used to adjust the information displayed based on URL query arguments for variation attributes – but there still is only one singular HTML webpage for a product. Some structured data plugins break this single product webpage by adjusting the Schema markup to include only the variation offer when URL query arguments are present. This has some serious drawbacks as the WooCommerce product webpage can no longer be cached, the canonical URL value is now invalid (ie. points to the main product page, which has different markup), and search engines traditionally ignore query arguments, which means they are seeing different markup for the same URLs. Breaking the WooCommerce product webpage might help fix Google merchant’s limitations, but it does so at the expense of search engine ranking.

So, how do we preserve the single webpage for a WooCommerce product with variations?

Continue reading

Better Schema Markup for WooCommerce

WPSSO + WooCommerce logos.

WooCommerce is a popular e-commerce plugin, with a solid and well designed code base, but WooCommerce is not an SEO plugin – its Schema markup for search engines is minimal and it does not provide any social meta tags for Facebook, Pinterest, Twitter, etc. This guide provides a quick and easy solution to fix your WooCommerce product Schema markup and meta tags.

Warnings for WooCommerce Markup

The Google Rich Results Test Tool, Schema Markup Validator, or the Google Search Console may report one or more of the following errors for the Schema markup provided by the WooCommerce plugin:

Continue reading

SEO Plugin Performance Report for Q2 2022

In June 2021, and then again in September 2021, we compared the performance of the most popular SEO plugins for WordPress. To continue what has become a bit of a tradition, we present the latest SEO performance report for April 2022.

We’ve classified the performance of each SEO plugin into one of three categories (best, average, and worst) and included a baseline chart for WordPress and the 2021 theme. This gives us a good baseline reference for the performance of each SEO plugin – as you will see, the best performing SEO plugins have almost no effect, while the slowest SEO plugin almost doubles the page load time and the number of database queries.

Continue reading

Remove WordPress Action / Filter Hooks by Name

The WordPress remove_action() and remove_filter() functions are useful, but they require the original hook priority and a function name, a class object and method name, or a class name and static method name.

Providing the class object in particular may be difficult or impossible, as plugin and theme classes may be extended and instantiated any number of ways. The following SucomUtilWP::remove_filter_hook_name() static method can be used to remove WordPress action and filter hooks using their class name instead of requiring a class object.

For example, if an action hook like this one has been added within a class object that was not saved, saved in a private/protected variable, or cannot be re-instantiated, then removing it might be impossible.

add_action( 'action_name', array( $this, 'method_name' ), 1000, 2 );

If you know the class (or extended class) name (‘Plugin_Namespace\Class_Name’ for this example), you can remove it using the following static method:

SucomUtilWP::remove_filter_hook_name( 'action_name', 'Plugin_Namespace\Class_Name::method_name' );

Continue reading

Refresh a Metabox in the WordPress Block Editor

The WordPress block editor shows registered metaboxes under the post / page content, but since it does not reload the webpage when saving content, metaboxes are not refreshed or reloaded when you save a draft or publish the post / page.

If your metabox needs to be refreshed, to show the new saved content (like the WPSSO Core or JSM Show Post Metadata plugins, for example), you need to add a change listener in javascript and refresh your metabox (using an ajax call) after the block editor has finished saving the metaboxes.

Continue reading

New WPSSO Google Merchant Feed Add-on

Just released, the new WPSSO Google Merchant Feed add-on retrieves product information from WPSSO Core Premium and provides maintenance free XML feeds for each WordPress language (aka locale).

There are no add-on settings to configure — the WPSSO Google Merchant Feed add-on automatically retrieves all product information in the language (aka locale) requested.

A supported e-commerce plugin, like WooCommerce or Easy Digital Downloads, is suggested but not required — the WPSSO Google Merchant Feed add-on can also retrieve custom product information entered in the WordPress editor Document SSO metabox. WooCommerce variations and additional WooCommerce product attributes are fully supported.

Continue reading