在短码中插入自定义域并在POST中使用它

时间:2015-03-24 作者:vlad37

我想在短代码中插入一个自定义字段,并在帖子中使用它。我希望短代码与参数一起使用。我试图解决此问题,但它显示的是“Array”字,而不是自定义字段的值:

function get_my_custom_field( $atts ) {
    global $post;
    return get_post_meta( $post->ID, $field, true );
}
add_shortcode( \'insert-custom-field\', \'get_my_custom_field\' );
帖子中出现的短代码:

[insert-custom-field field="price"]

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

正如我在评论中所说的,extract() 不应使用。由于非常特殊的原因,它被从core和codex中删除,并且在未来的应用和功能中严格不建议使用它。请see trac ticket #22400 获取完整的详细信息。

如前所述,法典也相应更新,因此您可以查看Shortcode API 关于如何构造适当的短码。

记住这一点,您可以按如下方式创建您的短代码:

function get_my_custom_field( $atts ) {
    $attributes = shortcode_atts( array(
        \'field\' => \'\';
    ), $atts );

    global $post;

    if ( empty( $attributes[\'field\'] ) )
      return null;

    return get_post_meta( $post->ID, $attributes[\'field\'], true );
}
add_shortcode( \'insert-custom-field\', \'get_my_custom_field\' );
编辑您可能还需要根据您的输入对输入进行清理。我将把这件事留给你,因为我不确定会传递哪些数据

SO网友:matheuscl

这个$atts 不要自动提取,请在通话前尝试此操作global $post

  extract(shortcode_atts(array(
    \'field\' => \'\',//#Default value or null
  ), $atts));
此代码摘录$atts 有关单个变量的详细信息,请参见Codex.

结束

相关推荐

Multiple level shortcodes

我正在开发一个插件,遇到了一种情况,我希望有人能帮我找到一个解决方案。我想要一个短代码结构,如:[shortcode_1] [shortcode_2] [shortcode_3] [shortcode_4][/shortcode_4] [/shortcode_3] [/shortcode_2] [/shortcode_1] 但如果我使用add\\u短代码,只有第一个短代码有效。。。有没有办法得到这样的短代码结构?谢谢