Letar du efter en svensk version?
Ponty Connector is a WordPress plugin that connects the Ponty Recruitment System to your WordPress site. Ads published in Ponty are automatically sent to WordPress where they can be displayed and customized.
Download the latest version (1.0.15)
The plugin does three things:
pnty_job (active ads) and pnty_job_showcase (showcase/terminated ads)The plugin never fetches data. Ads are pushed from the Ponty system to your WordPress installation. Once they exist in WordPress, they are handled as regular WordPress content.
Found under Settings → Ponty Connector.
/jobs/my-job. Default: jobsshowcase-jobsvalue1 (title) and value2 (URL).There are four ways to display ad data. Choose what fits your site best.
The simplest approach. Works in all themes and page builders. Place a shortcode on any page.
[pnty_jobs_table] — table of active ads[pnty_jobs_list] — list of active ads[pnty_showcase_table] — table of showcase ads[pnty_showcase_list] — list of showcase adsCommon attributes (all shortcodes):
| Attribute | Description | Default |
|---|---|---|
tag | Filter by tag(s), separated with | | |
numberposts | Max number of ads | -1 (all) |
organization_name | Show organization name | 0 |
location | Show location | 0 |
region | Show region | 0 |
empty_msg | Message when no ads exist | |
class | CSS class for the wrapper element |
Table attributes (pnty_jobs_table, pnty_showcase_table):
| Attribute | Description | Default |
|---|---|---|
title_column_name | Header for the title column | Title |
publish_date | Show publish date | 1 |
link_all | Make all cells clickable | 0 |
excerpt_title | Show excerpt as tooltip on hover | 0 |
List attributes (pnty_jobs_list, pnty_showcase_list):
| Attribute | Description | Default |
|---|---|---|
logo | Show organization logo | 0 |
logo_width | Logo width in pixels | |
excerpt | Show excerpt | 0 |
readmore | Show a read more link with given text |
If your site uses Elementor, you can build a fully custom ad template. The plugin registers Dynamic Tags that can be bound to Elementor widgets.
How to:
pnty_jobImage tags (for Image widgets):
| Dynamic Tag | Description |
|---|---|
| Ponty Logo | Organization logo |
| Ponty Profile Image | Contact person's profile photo |
Text tags (for Text Editor, Heading, etc.):
| Dynamic Tag | Description |
|---|---|
| Ponty Location | Work location |
| Ponty Region | Region |
| Ponty Organization Name | Organization name |
| Ponty Contact Name | Contact person's name |
| Ponty Contact Title | Contact person's title |
| Ponty Phone | Phone number |
| Ponty Email | Email address |
| Ponty Withdrawal Date | Withdrawal date (when the ad is unpublished) |
| Ponty External Apply URL | External application link |
| Ponty Video URL | Video URL |
| Ponty Language | Ad language |
Tip: If you build a custom Elementor template, turn off "Show client logo in ad" and set the apply button to "Do not show" in the plugin settings to avoid duplicates.
From WordPress 6.5+ with a block theme, you can build ad templates directly in the Site Editor without Elementor.
How to:
pnty_jobpnty/fieldsExample: A paragraph showing the work location:
<!-- wp:paragraph {
"metadata":{
"bindings":{
"content":{
"source":"pnty/fields",
"args":{"key":"_pnty_location"}
}
}
}
} -->
<p></p>
<!-- /wp:paragraph -->
Example: An image showing the organization logo:
<!-- wp:image {
"metadata":{
"bindings":{
"url":{
"source":"pnty/fields",
"args":{"key":"_pnty_logo"}
},
"alt":{
"source":"pnty/fields",
"args":{"key":"_pnty_logo"}
}
}
}
} -->
<figure class="wp-block-image">
<img src="" alt=""/>
</figure>
<!-- /wp:image -->
Available keys — see Meta fields below.
Tip: Same as with Elementor — turn off logo and apply button in settings if you display them via block bindings.
Most control. Create the file single-pnty_job.php in your theme folder (or single-pnty_job_showcase.php for showcase ads). WordPress will use it automatically.
Basic example:
<?php get_header(); ?>
<?php if (have_posts()): while(have_posts()): the_post();?>
<div class="pnty-job">
<h1><?php the_title();?></h1>
<?php the_content();?>
</div>
<?php endwhile; endif;?>
<?php get_footer(); ?>
Example with metadata:
<?php get_header(); ?>
<?php if (have_posts()): while(have_posts()): the_post();
$location = get_post_meta(get_the_ID(), '_pnty_location', true);
$org = get_post_meta(get_the_ID(), '_pnty_organization_name', true);
$logo_id = get_post_meta(get_the_ID(), '_pnty_logo_attachment_id', true);
?>
<div class="pnty-job">
<?php if ($logo_id): ?>
<?php echo wp_get_attachment_image($logo_id, 'pnty_logo'); ?>
<?php endif; ?>
<h1><?php the_title();?></h1>
<?php if ($org): ?>
<p class="org"><?php echo esc_html($org); ?></p>
<?php endif; ?>
<?php if ($location): ?>
<p class="location"><?php echo esc_html($location); ?></p>
<?php endif; ?>
<?php the_content();?>
</div>
<?php endwhile; endif;?>
<?php get_footer(); ?>
Fetch ads with a specific tag:
<?php
$jobs = get_posts([
'post_type' => 'pnty_job',
'has_password' => false,
'numberposts' => -1,
'tax_query' => [[
'taxonomy' => 'pnty_job_tag',
'field' => 'slug',
'terms' => 'exampletag'
]]
]);
?>
<?php if (count($jobs) > 0):?>
<ul>
<?php foreach($jobs as $job):?>
<li>
<a href="<?php echo get_permalink($job->ID);?>">
<?php echo esc_html($job->post_title);?>
</a>
</li>
<?php endforeach;?>
</ul>
<?php else:?>
<p>No published ads at the moment.</p>
<?php endif;?>
The [pnty_apply_btn] shortcode renders an application button for open applications or a specific assignment.
[pnty_apply_btn
org="exampleorg"
assignment_id="12345"
title="Apply here"
color="#e3304c"
lang="en"
]
org (required)mycompanyassignment_id (required)titlecolorlangsv or enEvery ad has the following metadata, available in templates, block bindings and Elementor. All are accessible via get_post_meta() and the REST API.
| Key | Description |
|---|---|
_pnty_assignment_id | Unique ID from Ponty |
_pnty_organization_name | Organization name |
_pnty_location | Work location |
_pnty_region | Region |
_pnty_name | Contact person's name |
_pnty_user_title | Contact person's title |
_pnty_email | Contact person's email |
_pnty_phone | Contact person's phone |
_pnty_user_profile_image | URL to contact person's profile photo |
_pnty_logo | URL to organization logo |
_pnty_logo_attachment_id | WordPress attachment ID for the logo |
_pnty_withdrawal_date | Withdrawal date (when the ad is unpublished) |
_pnty_external_apply_url | External application link |
_pnty_video_url | Video URL |
_pnty_language | Ad language |
_pnty_confidential | Whether the ad is confidential |
_pnty_address | Address (JSON) |
_pnty_client_contact | Client contact details (JSON) |
_pnty_meta_description | SEO description |
All ads and metadata are exposed via the WordPress REST API:
GET /wp-json/wp/v2/jobs
GET /wp-json/wp/v2/jobs/{id}
GET /wp-json/wp/v2/showcase-jobs
GET /wp-json/wp/v2/showcase-jobs/{id}
The meta fields above are included in the meta object in the response. Reading requires no authentication.
Two hooks are available for custom processing:
pnty_action_post_jobpnty_action_delete_jobtag="my-tag". In PHP: use tax_query with taxonomy pnty_job_tag.Elementor Dynamic Tags and Gutenberg Block Bindings (WordPress 6.5+) support. Block Patterns and default templates for job pages. New settings for fallback logo and show/hide client logo in ad content. REST API exposure of meta fields. Tag separator in shortcodes changed to pipe (|). PHP 8.3+ compatibility. Fix: Elementor Dynamic Tags crashed on render (PHP 8+). Fix: pnty_ads endpoint now returns all ads. Google+ share button removed.
PHP 8.x support. Widget pnty_latest_jobs_widget removed. Meta field _pnty_user_profile_image added.
Added location attribute to pnty_jobs_list and pnty_showcase_list.
Action hooks pnty_action_post_job and pnty_action_delete_job added.
Meta field _pnty_video_url added.
Password-protected ads support (preview). Note: custom methods should use 'has_password' => false.
PHP 7.2+ compatibility (create_function removed).