将元值作为短码参数发布

时间:2021-05-06 作者:vulgarbulgar

我使用一个插件(下载监视器)通过短代码显示下载。还使用加载项下载监视器-gravity forms lock. 因此,我必须在同一篇文章中包含的短代码如下:[dlm_gf_form download_id="download-form-id"] 哪里download-form-id 将表示post元名称。

我希望能够通过自定义字段值修改shortcode中的download form ID参数。

我在下载监视器的“gravity forms lock”加载项中找到了这个:

// hijack the download shortcode add_shortcode( \'dlm_gf_form\', array( $this, \'shortcode_dlm_gf_form\' ) );
我希望有一种方法可以过滤或劫持表单的短代码,就像标准下载短代码一样。

谢谢

1 个回复
最合适的回答,由SO网友:anton 整理而成

//劫持下载短代码add\\u短代码(\'dlm\\u gf\\u form\',array($this,\'shortcode\\u dlm\\u gf\\u form\');

这一行只是从类中添加了一个短代码。我检查了这个插件的类,他们没有提供任何操作或过滤器。您可以尝试修改此插件的原始代码,仅用于您的目的。我看不到任何其他解决方案。我甚至不知道这个插件做什么,只是看看源代码并试图理解逻辑,所以我的建议没有经过测试)

打开文件dlm-gravity-forms.php
从第156行可以看到以下代码:

// the download_id is a required attribute
if ( ! isset( $atts[\'download_id\'] ) ) {
    return \'Download Monitor - Gravity Forms Error: No download_id set!\';
}
检查是否设置了download\\u id。在此if语句之后,您可以使用相同的逻辑添加上一个问题中的相同代码-如果download\\u id不是数字-使用在download\\u id属性中传递的名称从post meta获取post meta值:

    if( !is_numeric($atts[\'download_id\']) ):
        $post_meta = get_post_meta(get_queried_object_id(), $atts[\'download_id\'], true);
        $post_meta ? $atts[\'download_id\'] = $post_meta : null;
    endif;
保存更改;)

相关推荐

为什么我的Archive.php重定向到front-page.php?

我使用wp_get_archives() 并得到我所有档案的清单。但当我点击其中一个链接时,它总是将我重定向到front-page.php 这是www.mydomainexample.com.我创建了一个archive.php 请在我的目录中归档,以防您感到疑惑。我还保存了对永久链接的更改。在我的情况下,我想重定向到年份/日期。链接wp_get_archives() 已经生成我要找的内容www.mydomainexample.com/2020/12 但它总是重定向到我的主页www.mydomainexam