调用自定义附件时出现简码错误

时间:2018-09-10 13:25:58

标签: php wordpress

我正在尝试创建一个简码,除了一个部分外,其他所有东西都运行良好:

    $pdflink = get_post_meta( get_the_ID(), 'wp_custom_attachment', true );
    $pdf = $pdflink['url'];

由于某种原因,当我调用$ pdf时出现错误(非法字符串偏移量'url'),我在页面模板中使用了类似的代码,但现在我希望它是一个简码,以便可以在其他地方使用它。 / p>

function quick_info_shorty( $atts ) {
    extract( shortcode_atts( array(
        'id' => 17      // Add the *default category id
    ), $atts ) );

    $posts = get_posts( array(
        'posts_per_page' => -1,
        'post_type' => 'casestudy',
        'post_status'    => 'publish',
        'cat'       => $id,
    ) );

    $return = '';
    $return .= '<div class="row text-center">';

    foreach ( $posts as $post ) {
        $imageid = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full' );
        $featimage = $imageid['0'];
        $pdftitle = get_the_title($post->ID);
        $pdflink = get_post_meta( get_the_ID(), 'wp_custom_attachment', true );
        $pdf = $pdflink['url'];

        $return .= '<div class="col-md-4 grey_bg">
        <a href="' . $pdf . '" target="_blank"><h2>' . $pdftitle . '</h2></a>
        <a href="' . $pdf . '" target="_blank"><img src="' . $featimage . '" /></a>
        </div>';
    } 

$return .= '</div>';
return $return;
}
add_shortcode( 'case_studies', 'quick_info_shorty' );

2 个答案:

答案 0 :(得分:1)

get_the_ID()只能在循环中使用,因此请使用$post->ID

$pdflink = get_post_meta( $post->ID, 'wp_custom_attachment', true );

答案 1 :(得分:0)

$pdflink = get_post_meta( get_the_ID(), 'wp_custom_attachment', fasle );
    $pdf = $pdflink['url'];

如果要将单个值作为返回值,请将$ single设置为true;如果结果为数组,则将$ single设置为false

https://developer.wordpress.org/reference/functions/get_post_meta/