在POST中显示WP类型的自定义字段

时间:2015-12-05 作者:Mindaugas

我有一个WooCommerce网站,在那里我使用WP类型插件在产品上添加了一些自定义字段。该网站有一个“新闻”部分,基本上是一个博客。

如何通过包含我使用WP Types插件添加的自定义字段,将想要的产品插入到博客帖子中?

是否可以为此创建自定义短代码(或多或少是一个接受参数作为产品ID并包含自定义字段短代码的短代码)?或者,可能有一个选项可以通过产品模板代码中的PHP代码获取字段值,如果是,如何获取?

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

您可能知道,也可能不知道任何post元数据都存储在一个新表中,$wpdb->Posteta。此表有四个字段:

“元id”-每个条目的唯一id“post\\u id”-此元数据的帖子id要在主题中使用元数据,请使用get_post_meta() 作用

get_post_meta($post_id, $key, $single);
其工作原理是:

$post\\u id是要为其提供元数据的帖子的id。使用$post->ID获取$post变量范围内的帖子ID。使用get\\u the\\u ID()检索WordPress循环中当前项的ID

  • $键是一个包含所需元值名称的字符串
  • $single可以是true或false。如果设置为true,则函数将以字符串形式返回单个结果。如果为false或未设置,则该函数返回一个自定义字段数组
  • 要在短代码中使用它,请将其添加到子主题函数中。php:

    function your_function_name( $atts ) {
        $a = shortcode_atts( array(
            \'id\' => get_the_ID(),
            \'key\' => \'\',
            \'single\' => \'true\',
        ), $atts );
    
        return get_post_meta($a[\'id\'], $a[\'key\'], $a[\'single\']);
    }
    add_shortcode( \'shortcode_text\', \'your_function_name\' );
    
    上述函数将创建此短代码:[shortcode_text id="" key="" single=""].

    正如我之前所说的,如果要在WordPress循环中检索当前项的ID,请省略id="" 我将默认值设置为get_the_ID().如果你只想得到一个值,你可以省去它single="" 以及默认设置为true。

    Custom Fields

    Shortcode API

    相关推荐

    redirect if shortcode exists

    WordPress初学者。我试图检查用户请求的页面中是否存在短代码,如果存在,则在用户未登录时重定向。function redirect_to_home() { if (has_shortcode(get_the_content(), \'shortcode\')) { if(!is_admin() && !is_user_logged_in()) { //redirect exit(); }