自定义字段的速记语法

时间:2014-12-02 作者:kristina childs

我正试图写一个短代码,但我对这些东西已经没有太多的练习了。这是一个插件式全宽音频播放器,我正在尝试查询某个播放列表中的所有曲目,以便它将输出要添加到播放器队列中的曲目名称。

function kc_tracks ($atts, $content = null) {
    extract(shortcode_atts(array(
            "num" => \'\',
            "cat" => \'44\'
    ), $atts));
    global $post;
    $myposts = get_posts(\'numberposts=\'.$num.\'&order=DESC&post_type=track&orderby=post_date\');
    $retour=\'<ul>\';
    foreach($myposts as $post) :
            setup_postdata($post);
         $retour.=\'<li><a href="\'.get_post_meta(\'fap_referral_link\').\'" class="fap-single-track">\'.the_title("","",false).\'</a></li>\';
    endforeach;
    $retour.=\'</ul> \';
    return $retour;
}
add_shortcode("tracks", "kc_tracks");
这条线我没法正常工作。

$retour.=\'<li><a href="\'.get_post_meta(\'fap_referral_link\').\'" class="fap-single-track">\'.the_title("","",false).\'</a></li>\';
输出此

<a href="" class="fap-single-track dJAX_internal">Downtempo</a>
我尝试了几种方法,但都没有成功,所以最终我还是寻求帮助。。。facepalm瞬间到来。

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

您的代码中有几个缺陷

  • get_post_meta( \'fap_referral_link\' ) 应该是get_post_meta( $post->ID, \'fap_referral_link\', true ). 请参见get_post_meta()

    在运行foreach

    永远不要使用extract(). 它使用eval() 代表EVIL. 由于一个特定的原因,多年前,这已经从Wordpress核心中完全删除了。它构成了一条巨大的安全线。请咨询Shortcode API 正确使用。下面是一个直接来自codex的关于如何使用短代码的示例

    // [bartag foo="foo-value"]
    function bartag_func( $atts ) {
        $a = shortcode_atts( array(
            \'foo\' => \'something\',
            \'bar\' => \'something else\',
        ), $atts );
    
        return "foo = {$a[\'foo\']}";
    }
    add_shortcode( \'bartag\', \'bartag_func\' );
    
    只有几个额外的注意事项

    不知什么原因,我不明白你为什么需要global $post. 查看代码似乎完全没有必要

    还有,你有cat 在你的属性中没有得到使用。

EDIT

您的自定义字段似乎包含多个值。最好的方法是var_dump() 查看返回的数据以及数据的确切格式。

检查this post 我最近在自定义字段上执行了

结束

相关推荐

对多个键和比较值使用META_QUERY

我想我可能是在用这根棍子乞求月亮,但是:我有一个过滤器shows 自定义帖子类型。过滤器使用附加到的标准分类法shows, 但也允许用户按场馆过滤,这是每个节目的元值,或者按月份过滤,因为每个节目都附有开始日期。我遇到的问题是,一些节目可能会跨越几个月;因此,2014年11月开始跑步,12月结束。为此,我将元数据存储如下:startdate => 20141225 enddate => 20141224 理想情况下,如果有人筛选2014年12月的节目,我希望显示1