Php 在缩略图短代码处添加帖子ID请求

Php 在缩略图短代码处添加帖子ID请求,php,wordpress,Php,Wordpress,我使用下面的脚本创建一个缩略图短代码,但这只在循环中或在文章内部有效 /* Thumb Shortcode */ function my_img() { if (has_post_thumbnail() ) { $image_id = get_post_thumbnail_id(); $image_url = wp_get_attachment_image_src($image_id,'medium'); $image_url = $image_url[0];

我使用下面的脚本创建一个缩略图短代码,但这只在循环中或在文章内部有效

/* Thumb Shortcode */
function my_img() {
if (has_post_thumbnail() ) {
    $image_id = get_post_thumbnail_id();  
    $image_url = wp_get_attachment_image_src($image_id,'medium');  
    $image_url = $image_url[0]; 
    $result = '<img src="'.$image_url.'" class="my_img" />';
    return $result;
}
return;
}
add_shortcode ('my_img', 'my_img');
/*拇指短码*/
函数my_img(){
如果(具有\u post\u缩略图()){
$image_id=get_post_缩略图_id();
$image\u url=wp\u get\u attachment\u image\u src($image\u id,'medium');
$image\u url=$image\u url[0];
$result='';
返回$result;
}
返回;
}
添加快捷码(“我的img”、“我的img”);
有没有简单的方法来修改它,这样我就可以在任何地方使用它和一个帖子ID

像这样:

<?php echo do_shortcode('[my_img post="100"]'); ?>
此函数将用于获取post shortcode属性(如果存在),如果不存在,则将使用循环中的thumb:

function my_img_func($atts) {
    $atts = shortcode_atts(array(
        'post' => null
    ), $atts, 'my_img');
    if($atts['post'] != null) {
        if (has_post_thumbnail((int) $atts['post']) ) {
            $image_id = get_post_thumbnail_id((int) $atts['post']);  
            $image_url = wp_get_attachment_image_src($image_id,'medium');  
            $image_url = $image_url[0]; 
            $result = '<img src="'.$image_url.'" class="my_img" />';
            return $result;
        }
    } else {
        if (has_post_thumbnail() ) {
            $image_id = get_post_thumbnail_id();  
            $image_url = wp_get_attachment_image_src($image_id,'medium');  
            $image_url = $image_url[0]; 
            $result = '<img src="'.$image_url.'" class="my_img" />';
            return $result;
        }
    }
    return '';
}
add_shortcode ('my_img', 'my_img_func');
函数my\u img\u func($atts){
$atts=短码_atts(数组)(
'post'=>null
),$atts,'my_img');
如果($atts['post']!=null){
如果(有帖子缩略图((int)$atts['post'])){
$image_id=get_post_缩略图_id((int)$atts['post']);
$image\u url=wp\u get\u attachment\u image\u src($image\u id,'medium');
$image\u url=$image\u url[0];
$result='';
返回$result;
}
}否则{
如果(具有\u post\u缩略图()){
$image_id=get_post_缩略图_id();
$image\u url=wp\u get\u attachment\u image\u src($image\u id,'medium');
$image\u url=$image\u url[0];
$result='';
返回$result;
}
}
返回“”;
}
添加快捷码('my_img'、'my_img_func');

请在Thx上试用以获得支持-这样它就不会与“do_shortcode”一起工作了?因为我是这样尝试的
do\u shortcode只要执行这个短代码,它就可以工作了。您可以执行
echo do_shortcode(“[my_img post=“12”]”)在你的模板中。如果它不起作用,你能在函数开始时对
$atts
执行
var\u dump
吗?呸,我真的是个新手!我该怎么办?就在
$atts=shortcode\u atts
(函数的第一行)之前,添加
var\u dump($atts)。重新加载页面时,它会告诉您
$atts
的值,这样我们就可以查看您的帖子ID是否通过了短代码。