Thread Starter
Sun
(@sunrv)
Hi Jory,
Thank you for the reply. Sadly the provided solution hasn’t fixed my issue. I’ve done the following things:
Added this code in functions.php
<?php
/**
* Allow Pods Templates to use shortcodes
*
* NOTE: Will only work if the constant
* PODS_SHORTCODE_ALLOW_SUB_SHORTCODES is defined and set to true,
* which by default it IS NOT.
*/
add_filter( 'pods_shortcode', function( $tags ) {
$tags[ 'shortcodes' ] = true;
return $tags;
});
Added this code in wp-config.php
define('PODS_SHORTCODE_ALLOW_SUB_SHORTCODES',true);
I cleared the cache and did a hard reload for the page and it didn’t change the result on the page. Did I miss a step in the process?
Hi @sunrv
Where are you using this shortcode? In case you are using auto-templates, see the bottom of the doc page here: https://docs.pods.io/displaying-pods/pods-templates/using-shortcodes-in-pods-templates/
Cheers, Jory
Thread Starter
Sun
(@sunrv)
Hi Jory,
I’m using auto-templates and viewed the doc page, thank you for sharing it. I’m not sure how to edit the code to make it allow Gravity Forms shortcodes since I don’t know php. Can you please explain to me how to edit the following code to make it suited for Gravity Forms?
add_filter( 'get_the_author_description', 'shortcode_unautop' );
add_filter( 'get_the_author_description', 'do_shortcode' );
Thanks in advance!
Hi @sunrv
The filter is already fine, though are you sure the hook get_the_author_description is correct? Our doc pages aren’t meant to just copy from without adjusting to your situation.
What is the hook you’ve selected for auto templates? That hook should be filled in the filter:
add_filter( 'YOUR_HOOK', 'shortcode_unautop' );
add_filter( 'YOUR_HOOK', 'do_shortcode' );
Cheers, Jory
Thread Starter
Sun
(@sunrv)
Hi Jory,
Thank you for the reply. I’m not sure about hooks, but the name of my single template is ‘Vacature Template’ and the list template’s name is ‘Vacature Lijst’. Would the hooks be the following?
add_filter( 'vacature_template', 'shortcode_unautop' );
add_filter( 'vacature_template', 'do_shortcode' );
add_filter( 'vacature_lijst', 'shortcode_unautop' );
add_filter( 'vacature_lijst', 'do_shortcode' );
Sadly I’m not familiar with hooks and how to locate/identify them. If I’ve got the wrong impression, could you please help point me into the right direction?
Thanks in advance!
Hi @sunrv
What hook did you define in your auto templates configuration? That is the hook that you need to enable shortcodes for. For post types this is usually the_content or the_excerpt. For archives this would be get_the_archive_description.
More info on hooks: https://learn.ww.wp.xz.cn/tutorial/wordpress-filter-hooks/
Vriendelijke groet!
Jory
I think the expected behavior in this case is not working because even if sub-shortcodes are enabled, I am fairly sure Pods will not parse shortcodes within [if] or [each] tags, which would be a pseudo-shortcode-sub-shortcode. ([if] and [each] are not real shortcodes, they are template tags, and additionally sub-shortcode parsing is not recursive.)
The below code should resolve it. This PHP will create a shortcode [maybe_allround_form] which would replace the entire [if] block, outputting the Gravity Form if the allround_form contains anything except 0 or (nothing) or false:
<?php
add_shortcode(
'maybe_allround_form',
function( $atts, $content, $tagname ) {
if ( ! empty( get_post_meta( get_the_ID(), 'allround_form', true ) ) ) {
return apply_shortcodes( '[gravityform id="6" title="false"]' );
}
return '';
}
);
If the above code displays the Gravity Form as expected, but does not hide it as expected, verify the contents of the allround_form field. For example, if it contains No for “disabled”, the if statement would be:
if ( 'No' !== get_post_meta( get_the_ID(), 'allround_form', true ) ) {
Thread Starter
Sun
(@sunrv)
Apologies for the late reply.
Paul’s solution worked! Is it also possible to reuse the code for other forms by changing some of the information on the PHP code?
If so, I would be most grateful to hear how.
Thanks regardless!