如何将WordPress自定义域数据显示为我的短代码?

时间:2019-06-15 作者:Arafat

我想使用WordPress默认自定义字段提取子标题文本?我使用这个短代码。但不显示任何文本?here the image I create the customfield

//Shortcode: [lplist catname="" lpimgbg="" lpcatheading="" lpbtnurl=""]
function hm_post_list_shortcode($atts, $content) {
ob_start(); 
$plistshortcode = shortcode_atts( array(
    \'catname\'=>\'$catatt\',
    \'lpimgbg\' => \'http://localhost/example.com/wp-content/uploads/2019/04/rotating-Whetstone-bass-fishing.jpg\',
        \'lpcatheading\'  => \'Heading Here\',
        \'lpbtnurl\' => \'https://www.google.com\'
), $atts);?>
<div class="lpcontainer" style="background-image: url(<?php echo esc_url($plistshortcode[\'lpimgbg\']); ?>);">
    <div class="lpcontent-box">
        <h3><?php echo esc_html($plistshortcode[\'lpcatheading\']); ?></h3>
        <div class="lplistitem">
            <?php
       $the_query = new WP_Query(array(
            \'posts_per_page\' => -1,
            \'category_name\' => $plistshortcode[\'catname\']
        ));?>
            <?php while($the_query->have_posts()) : $the_query->the_post(); ?>
            //Wordpress Default custom field
            <?php $sub_heading = get_post_meta($post->ID, \'sub_heading\', true);?>
            <a href="<?php echo esc_url(the_permalink()); ?>"><?php echo $sub_heading; ?></a>
            <?php endwhile;
            wp_reset_postdata();
        ?>
        </div>
        <div class="lpbtncontainer">
            <a href="<?php echo esc_url($plistshortcode[\'lpbtnurl\']); ?>"><?php echo esc_html(\'View Full List\');?></a>
        </div>
    </div>
</div>
<?php $hm_postlist = ob_get_clean();
return $hm_postlist;
}
add_shortcode( \'lplist\', \'hm_post_list_shortcode\' );

1 个回复
SO网友:Jacob Peattie

您正在使用$post->ID, 但尚未定义$post 在任何地方您需要指定global $post;, 获取循环中的当前帖子,或以其他方式定义它。但是获得这个ID的最好方法就是get_the_ID():

<?php $sub_heading = get_post_meta( get_the_ID(), \'sub_heading\', true ); ?>

相关推荐

Do not parse shortcode in CPT

我有一个CPT,我不想在它的内容中解析shortcode(使用\\u content()函数)。我可以使用remove\\u filter删除短代码的默认过滤器。但我如何确定我只是为了我想要的CPT而删除过滤器?我有一个在页面中使用的快捷码[我的自定义快捷码]。此短代码使用WP\\U查询和输出CPT帖子。我不想在这篇CPT文章中分析短代码。我是否应该在短代码解析挂钩之前用虚拟内容更改短代码,并在之后替换回来?或者我应该在我的CPT输出之前删除短代码的默认过滤器,然后在我的CPT输出完成后再次添加短代码的默