Support » Plugin: Pods - Custom Content Types and Fields » Extending Coupon Plugin Post issues

  • Resolved mungbean

    (@mungbean)


    I was trying to extend a coupon plugin that has Coupon post types (https://wordpress.org/plugins/wp-coupons-and-deals/). I added a website field in Pods with the hopes of embedding content via URL within the coupon itself. The coupon form from the plugin, has no website/URL field.

    When I put the coupon’s shortcode in a test post, only the embedded content from the Pods field rendered, but not the coupon.

    It looks like WP is only detecting the URL from the extended field within the extended coupon post type, and interpreting the entire coupon shortcode as only that URL, so it’s converting the shortcode into a YT embed block, rather than the coupon shortcode block.

    Any suggestions on how to resolve this?

    Alternatively, I could create a new Pod content type for a “coupon” but since I want to benefit from the coupon UI visual styling from the coupon plugin, I’d like to embed the coupon post type from the plugin, into the NEW custom pod content type. And then add a website input field.

    Is there a way to embed existing post types into a new Pod content type? Kind of like the reverse of extending an existing post type

Viewing 15 replies - 1 through 15 (of 19 total)
  • Thread Starter mungbean

    (@mungbean)

    I tried it again with a different coupon plugin (https://wordpress.org/plugins/affiliate-coupons/) and it seems to be doing the reverse. The coupon renders as intended, but the website field added via Pods extension, does not have any effect when published, even though that extended field shows up in the coupon post form.

    It also appears, per the original post, that the coupon plugin “cannot be extended”?

    I’d expect the extended fields to render outside of the coupon body. I’m testing by embedding a YT video.

    Please advise.

    Thanks!

    Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @mungbean

    The way our fields are rendered highly depends on the way the Coupon plugin works. Even with themes this might differ a lot.
    Keep in mind that our fields will never render automatically. You’ll have to do that part yourself, either with PHP or with Pods Templates attached to a hook that is called in your page.
    Have you seen our introduction video? https://docs.pods.io/videos/grow-beyond-posts-pages-introduction-pods-framework/

    Cheers, Jory

    Thread Starter mungbean

    (@mungbean)

    Thanks for getting back to me. I have not watched the video, only the demo video on the plugin page. I will check it and get back to you.

    I was exploring YouTube sharing options, and there is a URL-embed and an iframe-embed option. I’d like to use the iframe method since it supports resizing of the player. Is there a Pod field type that can accept iframe code snippets, and render it accordingly?

    Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @mungbean

    You could try the oEmbed field?
    And if you want to input your own HTML then I’d advice the Code field.

    Cheers, Jory

    Thread Starter mungbean

    (@mungbean)

    Hi Jory,

    I wanted to follow up regarding the oEmbed field. Unfortunately it is not working, or not working as expected. I am using the embed code generated by Youtube (iframe). I’ve pasted it into the oEmbed field but it doesn’t seem to do anything.

    What format does the field accept? It renders as a long text field, if it takes code snippets, I’d assume a text area for code, much like the Pods template form.

    Speaking of the Pods, I watched the intro video you recommended. I created Pod templates for the extended post types (a div for each extended field), and activated them for the post type, per the video guidance. It does not appear to be showing any of the extended fields, but the core post fields are displaying.

    This is different now to the original issue, which was not showing the core post fields, but showing the video (URL rather than iframe).

    Thanks.

    I just did a pod with three possible YouTube videos stacked in a float (right side) and multiple more in a flex lower down. If you want to use a Pods oEmbed field, fill it in with just the link, not the whole iframe. You can also select “show preview” in the field’s “additional field options”. If you want to use the YouTube-provided iframe you can put it in a text/code field, or use WordPress’s auto-embed capability (you put the YouTube link by itself on its own line). Using [embed][/embed] doesn’t always work for me — I think it’s something to do with allowing shortcodes but not always, I haven’t sorted that out.

    Thread Starter mungbean

    (@mungbean)

    Thanks for the tips. The main reason I wanted to use the generated iframe snippet is because it would allow me to specify player size etc. The embed URL option does not seem to allow any level of customization, and when I tried, defaulted to a very large/wide player.

    I tried checking “show preview” for oEmbed field as your suggested, but unfortunately that is not having an effect, I tried both the YT-generated embed URL and the embed iframe snippet int the field too.

    I’m thinking these issues I’m encountering with adding an embed field via Pods to the coupon plugin post types, is a matter of the coupon plugin itself preventing it.

    Plugin Author Jory Hogeveen

    (@keraweb)

    I’m thinking these issues I’m encountering with adding an embed field via Pods to the coupon plugin post types, is a matter of the coupon plugin itself preventing it.

    Could be, however, the oEmbed field should still work. Just tested locally.
    Do you see any errors in your browser console?

    I tried both the YT-generated embed URL and the embed iframe snippet int the field too.

    Please also try the default YT browser URL. This is normally the oEmbed link WP uses.

    Cheers, Jory

    Thread Starter mungbean

    (@mungbean)

    Hi Jory,

    So when I enter a YouTube share URL (ex. https://youtu.be/Df9uvxp0160) in the oEmbed field, in the edit post view, it does correctly display the video in the “preview” field. But it does not show on the live site. As of now it is just displaying the coupons correctly, but with no embedded videos (within or after the coupon), as if the two additional Pod fields don’t exist.

    It doesn’t seem to do anything when entering a Youtube embed snippet (ex.<iframe width=”560″ height=”315″ src=”https://www.youtube.com/embed/Df9uvxp0160&#8243; frameborder=”0″ allow=”accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture” allowfullscreen></iframe>). This is my preferred embed method as it allows dimension adjustments etc. Is the oEmbed field designed to also accept and render snippets like this? Is there a field type currently available, or planned, that will accept such data?

    How can I check for errors in the browser console? Sorry, I am unfamiliar with that.

    I’ve double checked the Pod templates and associating them to Pod post types per the video you recommended, so I am confused as to what could be doing wrong. I am testing on a localhost.

    When you say tested locally, do you mean with the same Website/oEmbed Pod fields added to the two coupon plugins I’m experimenting with?

    Thanks again for the help

    Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @mungbean

    Is the oEmbed field designed to also accept and render snippets like this? Is there a field type currently available, or planned, that will accept such data?

    No, it uses the default WordPress oEmbed renderer.

    How can I check for errors in the browser console? Sorry, I am unfamiliar with that.

    https://www.google.com/search?q=How+can+I+check+for+errors+in+the+browser+console

    I’ve double checked the Pod templates and associating them to Pod post types per the video you recommended, so I am confused as to what could be doing wrong. I am testing on a localhost.

    Please share your exact settings.
    I think that your settings are correct though but that your theme location isn’t supported (incorrect hook/filter).

    When you say tested locally, do you mean with the same Website/oEmbed Pod fields added to the two coupon plugins I’m experimenting with?

    I meant that I’ve tested the oEmbed field locally by adding a YT video to it and rendering it after the post content.
    Keep in mind though that if you use a page builder you might use a text field module. This isn’t the same. When I refer to the post content I refer text fetched though the_content(): https://developer.wordpress.org/reference/functions/the_content/

    Cheers, Jory

    Thread Starter mungbean

    (@mungbean)

    Thanks for getting back to me, Jory

    I am using Firefox, so used the similar inspect element tool and checked for errors, on the test post page I had created that holds the coupon posts (via shortcode). The only error related thing that came up was

    This page uses the non standard property “zoom”. Consider using calc() in the relevant property values, or using “transform” along with “transform-origin: 0 0”. test-coupon-posts
    contentscript.js: http://localhost/wordpress/2021/01/06/test-coupon-posts/ <empty string> contentscript.js:24:9
    JQMIGRATE: Migrate is installed, version 3.3.2 jquery-migrate.min.js:2:709

    ____________________________________
    I am using the BuddyX theme (https://wordpress.org/themes/buddyx/)

    As for the template settings for the pod, they are:

    Enable auto templates : checked
    Singular template : [my template]
    Singular template location : after
    Singular template filter: the_content
    List template : [my template]
    List template location: after
    List template filter : the_excerpt
    Run outside the loop: unchecked
    _________________________

    On a separate, but related note regarding the oEmbed field, I just noticed the advanced settings tabs which allows iframe dimensions. I assume then you can enter the Youtube embed URL, but the dimensions from the Youtube iframe snippet, in those associated advanced field settings?

    _________________________

    I will have to read up on the the_content WP documentation as I have minimal experience with digging into the guts of WP

    I hope I provided the correct information you were seeking! Let me know otherwise

    Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @mungbean

    The console error should be unrelated to this issue.

    So your hook is the_content. If the buddyX theme uses this hook it should work out of the box.
    https://github.com/vapvarun/buddyx/blob/master/template-parts/content/entry_content.php
    It uses the_content() so you should be fine there.

    What template did you select? [my template] is a shortcode, not a template.

    I assume then you can enter the Youtube embed URL, but the dimensions from the Youtube iframe snippet, in those associated advanced field settings?

    Correct, you could define the dimensions here.

    Cheers, Jory

    Thread Starter mungbean

    (@mungbean)

    Hi Jory,

    So the “[my template]” was just something I added rather than the actual template name – placeholder. I have selected the template I created, so replace the “[my template]” with the actual template name. And no Pod fields are showing still.

    The template itself is simple, three lines, each referring to the Website, oEmbed, and Media pod fields, respectively

    
    <div> test url: {@embed_content_2}</div>
    <div> test iframe: {@test_embed_iframe}</div>
    <div> test media: {@test_media}</div>

    So it appears the theme I’m using is compatible with Pods, and the Pod associated post-template settings look fine, could it be the template html itself? I’ll admit, some of the text was hard to read in the video (too small).

    Thanks!

    Plugin Author Jory Hogeveen

    (@keraweb)

    Hi @mungbean

    Just to make sure the filter works, could you add the following to your theme’s functions.php?

    add_filter( 'the_content', function() {
    
      if ( is_user_logged_in() ) {
        echo 'WORKS!!';
      }
    
    } );

    This will output WORKS!! in the post content if the filter works at all.
    Note, this code snipped only works if you are logged in (in case you are using a production environment).

    Cheers, Jory

    Thread Starter mungbean

    (@mungbean)

    Hi Jory,

    Yes! Your test snippet above worked when I added it to my theme file (functions.php). It replaced all instances of the coupon shortcodes with “WORKS!!” in the posts. Upon closer inspection, it replaced the post body, which I think was the intention. It also showed at various other places too.

    What would you suggest be the next thing to try?

    Thanks!

Viewing 15 replies - 1 through 15 (of 19 total)
  • You must be logged in to reply to this topic.