作为短码参数的自定义字段值

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

我使用一个插件(下载监视器)通过短代码显示下载。短代码只有一个参数,即下载的ID:[download id="123"]

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

我创建了一个自定义字段-ur-single-form-id - 也是它的一个短代码[ur_single_form_id] 通过以下功能:

function ur_single_form_id() {
    $cf = get_post_meta( get_the_ID(), \'ur-single-form-id\', true );
    $var = \'<p class="your-class">\' . $cf . \'</p>\';
    return $var;
}
add_shortcode( \'ur_single_form_id\', \'ur_single_form_id\' )
这是为了能够做这样的事情:[download id="[ur_single_form_id]"]

不幸的是,事情并没有按预期进行分析,我得到一个错误,即;找不到下载;。

如何实现这一点,以便使用自定义字段值在下载监视器短代码中填充下载ID?

谢谢

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

我从未使用过这个插件,只是从存储库下载了它,发现它们提供了id值的过滤器

将此筛选器回调函数添加到函数中。php文件
[download id="auto"] - 将使用您帖子元中的id(硬编码元名称)
[download id="123"] - 将使用id 123

function download_shortcode_custom_id($id, $atts = []){
     if(!is_numeric($id) && $id = \'auto\' ):
        //change \'temp\' post meta name with your own
        $post_meta = get_post_meta(get_queried_object_id(), \'temp\', true);
        $post_meta ? $id = $post_meta : null;
     endif;
     return $id;
}

add_filter(\'dlm_shortcode_download_id\', \'download_shortcode_custom_id\', 10, 2);
作为第二个选项,您可以将post meta名称设置为id值
[download id="temp"] - 将使用此帖子元名称检索id
[download id="123"] - 将使用id 123

function download_shortcode_custom_id($id, $atts = []){
     if( !is_numeric($id) ):
        $post_meta = get_post_meta(get_queried_object_id(), $id, true);
        $post_meta ? $id = $post_meta : null;
     endif;
     return $id;
}

add_filter(\'dlm_shortcode_download_id\', \'download_shortcode_custom_id\', 10, 2);

相关推荐

Shortcode not being executed

我将以下代码放在WP“init”回调中(或加载插件时)。add_shortcode(\'my_shortcode\', function($atts, $content =\'\') { die(); } ); if (!shortcode_exists(\'my_shortcode\')) die(); 在我的页面中,我放入“[my_shortcode]“”当我查看页面时,我得到“****”知道我的代码怎么了吗?更