{"id":299817,"date":"2026-10-26T23:04:32","date_gmt":"2026-10-26T23:04:32","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/yubhub-jobs\/"},"modified":"2026-10-26T23:04:08","modified_gmt":"2026-10-26T23:04:08","slug":"yubhub-jobs","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/yubhub-jobs\/","author":1716765,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"6.9.11","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"YubHub Jobs","header_author":"Richard Baxter","header_description":"Import and display job listings from YubHub XML feeds with search, filters, colour themes, and optional Google Indexing API integration.","assets_banners_color":"","last_updated":"2026-10-26 23:04:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/yubhub.co\/","header_author_uri":"https:\/\/houtini.ai\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":100,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"richardbaxterseo","date":"2026-10-26 23:04:08","revision":3767460}},"upgrade_notice":{"1.0.5":"<p>Fixes a PHP 8.1+ deprecation warning that could prevent activation on strict-error-handling hosts.<\/p>","1.0.4":"<p>Critical fix \u2014 resolves a PHP parse error in the feed importer introduced by malformed phpcs:ignore comments.<\/p>","1.0.2":"<p>Final Plugin Check compliance pass \u2014 all errors resolved.<\/p>","1.0.1":"<p>Coding standards fixes for WordPress.org Plugin Check compliance.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[15888,8107,23732,9023,11891],"plugin_category":[39],"plugin_contributors":[288802],"plugin_business_model":[],"class_list":["post-299817","plugin","type-plugin","status-publish","hentry","plugin_tags-employment","plugin_tags-job-board","plugin_tags-job-listings","plugin_tags-jobs","plugin_tags-xml-feed","plugin_category-business","plugin_contributors-richardbaxterseo","plugin_committers-richardbaxterseo"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/yubhub-jobs.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Here's the deal. YubHub publishes free XML job feeds, real postings that we keep current on our side (new ones in, closed ones out), and this plugin pulls them into your WordPress site and shows them properly: a jobs archive, a page per job, search, filters, the lot. You don't pay anything. The feeds are free, with a small YubHub credit built into the feed itself, and that credit is the whole arrangement. If you'd rather run the feeds without it, that's a paid option.<\/p>\n\n<p>I built it because I wanted a quick way to put current jobs on a site without running a scraper or paying for a job board API. The feeds do the hard part (finding the jobs, tidying them up, dropping the ones that have closed). The plugin just imports them every hour and gets out of the way. It works well for a careers section, a niche job board, a community or membership site, anywhere you'd like a set of live roles without doing the legwork yourself.<\/p>\n\n<p><strong>What you get:<\/strong><\/p>\n\n<ul>\n<li>Automatic feed import, hourly through WP-Cron, plus a manual import button for when you can't wait<\/li>\n<li>Search by keyword, job type and location<\/li>\n<li>Three colour themes: Default Blue, Midnight Indigo and Forest Green<\/li>\n<li>A [yubhub_jobs] shortcode so you can drop the listings into any page or post<\/li>\n<li>Sponsored banner slots if you want to make a bit of money from the page<\/li>\n<li>Google Indexing API support (optional) so Google hears about new jobs quickly<\/li>\n<li>Templates you can override from your theme<\/li>\n<li>Responsive layout, built mobile first<\/li>\n<li>Schema.org JobPosting structured data on every job<\/li>\n<\/ul>\n\n<p><strong>On the terms.<\/strong> No licence key, no trial period, no paid version of the plugin. The feeds are free too, with a YubHub credit built into the feed. If you want them without the credit, that's a paid option. The free feeds are listed at <a href=\"https:\/\/yubhub.co\/free-job-feeds\/\">yubhub.co\/free-job-feeds<\/a>.<\/p>\n\n<p>I can't have tested it against every theme out there, so if your layout does something odd, the templates are overridable and you can shape them to fit (more on that below).<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the following third-party services:<\/p>\n\n<h4>YubHub Feed Service<\/h4>\n\n<p>This plugin fetches job listing data from XML feeds hosted on <a href=\"https:\/\/yubhub.co\">YubHub<\/a>. Feed URLs are configured by the site administrator. The plugin sends an HTTP request to each configured feed URL on an hourly schedule (via WP-Cron) and when manually triggered by an admin.<\/p>\n\n<ul>\n<li><strong>What data is sent:<\/strong> An HTTP GET request to the feed URL configured by the administrator. No user data is transmitted.<\/li>\n<li><strong>When:<\/strong> Hourly via WP-Cron, or on demand via the admin settings page.<\/li>\n<li><a href=\"https:\/\/yubhub.co\/terms\">YubHub Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/yubhub.co\/privacy\">YubHub Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Google Indexing API (optional)<\/h4>\n\n<p>If enabled, this plugin uses the <a href=\"https:\/\/developers.google.com\/search\/apis\/indexing-api\/v3\/quickstart\">Google Indexing API<\/a> to notify Google when new job pages are published or removed. This feature requires the site administrator to upload a Google Cloud service account JSON key.<\/p>\n\n<ul>\n<li><strong>What data is sent:<\/strong> The public URL of each published job post, along with an update type (URL_UPDATED or URL_DELETED).<\/li>\n<li><strong>When:<\/strong> After a feed import completes, or when the administrator processes the indexing queue.<\/li>\n<li><strong>Authentication:<\/strong> OAuth 2.0 JWT tokens are exchanged with Google's token endpoint (oauth2.googleapis.com).<\/li>\n<li><a href=\"https:\/\/developers.google.com\/terms\">Google APIs Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>yubhub-jobs<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the Plugins menu<\/li>\n<li>Go to YubHub Jobs &gt; Feed Settings to add your feed URLs<\/li>\n<li>Click \"Run Manual Import\" to import jobs immediately<\/li>\n<li>Jobs will appear at <code>\/jobs\/<\/code> and can be embedded with <code>[yubhub_jobs]<\/code><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20it%20really%20free%2C%20and%20is%20there%20a%20catch%3F\"><h3>Is it really free, and is there a catch?<\/h3><\/dt>\n<dd><p>Yes, the plugin is free, no licence key, no trial period, no paid tier. The feeds are free as well, with a small YubHub credit built into the feed. That credit is how they stay free, and if you'd rather not show it there's a paid option. The free feeds are at <a href=\"https:\/\/yubhub.co\/free-job-feeds\/\">yubhub.co\/free-job-feeds<\/a>.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20feed%20urls%3F\"><h3>Where do I get feed URLs?<\/h3><\/dt>\n<dd><p>From <a href=\"https:\/\/yubhub.co\">yubhub.co<\/a>. The free feeds are listed at <a href=\"https:\/\/yubhub.co\/free-job-feeds\/\">yubhub.co\/free-job-feeds<\/a>, and if you want feeds built around your own set of companies, sign up there and create them. Either way you end up with an XML URL, which is what you paste into Feed Settings.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20colour%20theme%3F\"><h3>How do I change the colour theme?<\/h3><\/dt>\n<dd><p>YubHub Jobs &gt; Feed Settings &gt; Appearance tab. Pick one of the three and save. Takes about ten seconds.<\/p><\/dd>\n<dt id=\"can%20i%20override%20the%20templates%3F\"><h3>Can I override the templates?<\/h3><\/dt>\n<dd><p>Yes. Copy whatever you want to change from <code>wp-content\/plugins\/yubhub-jobs\/templates\/<\/code> into <code>wp-content\/themes\/your-theme\/yubhub-jobs\/<\/code> and edit it there. Your copy wins, and it won't be overwritten when the plugin updates.<\/p><\/dd>\n<dt id=\"how%20does%20the%20google%20indexing%20api%20work%3F\"><h3>How does the Google Indexing API work?<\/h3><\/dt>\n<dd><p>It's optional. Upload a Google Cloud service account JSON key under YubHub Jobs &gt; Google Indexing and, after each import, the plugin tells Google about every new job page (and about the ones that have gone). Setting up the service account on Google's side is your job; the plugin just sends the URLs. If you don't upload a key, nothing is sent and the rest of the plugin carries on as normal.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed PHP 8.1+ deprecation: explicit nullable type on Indexing_API_Client constructor<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixed PHP parse error in feed importer caused by malformed inline phpcs:ignore comments<\/li>\n<li>Moved phpcs:ignore annotations onto their own lines above each error_log() call<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Prefixed all global-scope variables for Plugin Check compliance<\/li>\n<li>Additional escaping and phpcs annotation fixes<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed escaping on all output (OutputNotEscaped)<\/li>\n<li>Replaced date() with gmdate() throughout<\/li>\n<li>Replaced unlink() with wp_delete_file()<\/li>\n<li>Added wp_unslash() to all superglobal inputs<\/li>\n<li>Inlined PreparedSQL for PHPCS compliance<\/li>\n<li>Added nonce verification annotations for public search forms<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>XML feed import with batching and locking<\/li>\n<li>Search, filter, and pagination<\/li>\n<li>3 colour themes<\/li>\n<li>Google Indexing API integration<\/li>\n<li>Theme-overridable templates<\/li>\n<li>Uninstall cleanup<\/li>\n<\/ul>","raw_excerpt":"Live job listings on your WordPress site, free. Imports YubHub XML feeds with search, filters and colour themes.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/299817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=299817"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/richardbaxterseo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=299817"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=299817"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=299817"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=299817"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=299817"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=299817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}