将IF(GET_POST_META)应用于新的短码

时间:2012-10-05 作者:user21165

这是我第一次来这里,接下来是:)

我已经创建了一个自定义图像字段,它允许我上载新图像,或者从前端通过表单添加图像。我想把这些展示出来。

我正在创建一个这样的短代码:

    function display_ad() {
    global $post;
    return do_shortcode( \'<a href="\' . get_permalink($id) . \'">\' . \'<img src="\' . get_post_meta( $post->ID , "wpcf-display-ad" , true ) . \'"/>\' . \'</a>\' );
    }
    add_shortcode(\'display-ad\', \'display_ad\');
这很好——图像被显示并链接到各自的帖子,但对于不包含显示图像的帖子,src标记仍然会返回(以及任何css,例如边框)。

我正在努力找出如何将if语句应用于上述代码,即:

    if ( get_post_meta( $post->ID , "wpcf-display-ad" , true ) ) :
。。。因此,如果图像不存在,则不会返回任何内容。

你好Abdussamad

谢谢你的建议。我刚刚花了最后一个小时试着把我的头绕在他们身上,让他们去工作,但没有乐趣。我必须警告您,我正处于PHP的早期阶段:)

以下是我根据您的评论所做的:

function display_ad() {
global $post;
$content = get_permalink($id);
$ad_image = get_post_meta( $post->ID , "wpcf-display-ad" , true );
if( empty( get_post_meta( $post->ID, \'wpcf-display-ad\', true ) ) ) {
return $content;
} else {
return $content . $ad_image;
}
}
add_shortcode(\'display-ad\', \'display_ad\');
然而,这只是返回一个白色屏幕。

我目前在我的开发网站上有两篇帖子(一篇有显示广告,另一篇没有),如果我删除if语句位,只需return $content; 然后显示帖子及其永久链接。如果我只是return $ad_image; 同样,这些帖子显示在一起,一个显示图像的路径,另一个空白(但出现在Chrome的开发者工具面板中)。

然而,使用if语句,我得到了白色屏幕。显然我做错了什么。谢谢你的帮助。

加文。

1 个回复
SO网友:Abdussamad

首先,display\\u ad函数应该有一个参数$content,该参数包含帖子的内容,直到放置快捷码为止。因此,在返回之前,您将$内容与广告图像连接起来。

第二个问题是:

if( empty( get_post_meta( $post->ID, \'wpcf-display-ad\', true ) ) ) {
   return $content;
 } else {
    return $content . $ad_image;
 }

结束

相关推荐

PHP Widget and do_shortcode

我正在使用PHP小部件,它允许PHP代码从小部件执行。我尝试使用此代码执行do\\u shortcode,但它没有呈现<?php $lat = get_field(\'woo_maps_lat\'); $long = get_field(\'woo_maps_long\'); echo do_shortcode(\'[forecast location=\"\' . $lat .\',\'.$long. \'\" measurement=\\\'C\\\']\');