WordPress在循环之外获得自定义元值

时间:2019-02-18 05:58:04

标签: php wordpress

我正在尝试获取自定义字段'product_url'的值,此代码将在functions.php中使用,并且我在一篇文章中使用了简码。自定义字段'product_url'存在于此信息中,并且不为空。

 function metavalue() {
                    GLOBAL $post;
                    $meta = get_post_meta($post->ID, 'product_url', true);
                    echo $meta;


                    }
 add_shortcode('url_short', 'metavalue');

当我使用简码时什么也没显示。 var_dump($meta);将输出

  

string(0)“”

1 个答案:

答案 0 :(得分:0)

您需要将$ postid传递给get_post_meta函数。

 function metavalue() {
    global $post;
    $meta = get_post_meta($post->ID, 'product_url', true);
    return $meta;
  }
 add_shortcode('url_short', 'metavalue');

如何调试:

  • 检查产品或帖子是否具有product_url值。
  • 获取产品ID /帖子,您可以通过管理员编辑帖子/页面获取。
  • 通过ID作为短代码功能中的静态值。

    function metavalue() { global $post; $meta = get_post_meta(112, 'product_url', true); // 112 static postid return $meta; } add_shortcode('url_short', 'metavalue');

版本2:带有参数的简码

使用已知属性合并用户属性,并在需要时填写默认值。

对应该被视为调用者支持并以列表形式给出的所有属性。返回的属性将仅包含$ pairs列表中的属性。

如果$ atts列表具有不受支持的属性,则它们将被忽略并从最终返回的列表中删除。

function metavalue($atts) {

 $atts = shortcode_atts(
        array(
            'postid' => 1,            
        ), $atts, 'url_short' );
  global $post;

  $meta = get_post_meta($atts['postid'], 'product_url', true); // 112 static postid
  return $meta;
  }
 add_shortcode('url_short', 'metavalue');

使用方法:

[url_short postid=1911]