Wordpress Meta Box插件,从自定义帖子类型

时间:2016-08-28 21:22:12

标签: php wordpress meta-boxes

对Wordpress Meta Box插件有点麻烦,特别是从添加到自定义帖子类型的图像中检索图像网址。

我正在自定义插件中创建元框,如下所示:

add_filter( 'rwmb_meta_boxes', 'xxx_meta_register_meta_boxes' );

    function xxx_meta_register_meta_boxes( $meta_boxes )
    {

    $prefix = 'xxx_meta_';

    $meta_boxes[] = array(
    'title' => esc_html__( 'Retailer Information', '' ),
    'id'         => 'advanced',
    'post_types' => array( 'xxx_retailers' ),
    'autosave'   => true,
    'fields'     => array(

      // PLUPLOAD IMAGE UPLOAD (WP 3.3+)
            array(
                'name'             => esc_html__( 'Retailer Logo', '' ),
                'id'               => "{$prefix}plupload",
                'type'             => 'plupload_image',
                'max_file_uploads' => 1,
            ),

            // URL
            array(
                'name' => esc_html__( 'Link', '' ),
                'id'   => "{$prefix}url",
                'desc' => esc_html__( 'Clicking the retailer logo will take the user to this URL', '' ),
                'type' => 'url',
                'std'  => 'xxx',
            ),
        )
    );
    return $meta_boxes;
    }

到目前为止,这些框与自定义帖子类型'xxx_retailers'相关。

问题在于检索此数据。我想在小部件中显示我的零售商。我已经切碎并更改了我之前使用过的另一段代码,但它没有返回图像URL,只返回ID。不幸的是,我不知道足够的PHP来弄清楚原因。

// Create Retailers Widget
    // Create the widget
    class Retailers_Widget extends WP_Widget {
        function __construct() {
                parent::__construct(
                        // base ID of the widget
                        'retailers_widget',
                        // name of the widget
                        __('XXX Retailers List', '' ),
                        // widget options
                        array (
                            'description' => __( 'Shows a list of retailer logos', '' )
                        )
                    );
    }
        function widget( $args, $instance ) {
            // kick things off
            extract( $args );
            echo $before_widget;
            echo $before_title . 'Retailers' . $after_title;

      // Pull through Retailers
      $xxxretailers = get_posts(array(
                        'post_type' => 'xxx_retailers',
                        'orderby' => 'title',
                        'order' => 'asc',
                    ));

    // Display for each Retailer
    foreach ($xxxretailers as $xxxretailer) {
      $custom = get_post_custom($xxxretailer->ID);
      $meta_ret_img = $custom["xxx_meta_plupload"][0];
      $meta_ret_url = $custom["xxx_meta_url"][0];
      // Display Retailers
      echo "<li><a href='{$meta_ret_url}'><img src='{$meta_ret_img}' /></a></li>";
           }
        }
};
// Register widget
function register_retailers_widget() {
  register_widget( 'Retailers_Widget' );
}
add_action( 'widgets_init', 'register_retailers_widget' );

网址正确,所以我知道这是行

的问题
$meta_ret_img = $custom["xxx_meta_plupload"][0];

但我无法弄清楚如何从我认为存储为数组的数据中获取图像URL。有什么想法吗?

编辑:

我应该提到,在一篇文章中我可以得到一张图片:

$images = rwmb_meta( 'xxx_meta_plupload', 'size=medium' );
if ( !empty( $images ) ) {
    foreach ( $images as $image ) {
        echo "<img src='{$image['url']}' />";
    }
}

但我希望显示所有零售商帖子类型的图片,以创建徽标列表。

1 个答案:

答案 0 :(得分:0)

替换此声明:

$meta_ret_img = $custom["xxx_meta_plupload"][0];

用这个:

$meta_ret_img_array = wp_get_attachment_image_src($custom["xxx_meta_plupload"][0]);

$meta_ret_img = $meta_ret_img_array[0];

请从代码中删除srchref属性中的所有花括号。

如果您对图片的任何特定尺寸感兴趣,请参阅wp_get_attachment_image_src()函数here的官方文档。

例如对于中等尺寸的图片,您可以将其写为:

wp_get_attachment_image_src($custom["xxx_meta_plupload"][0], 'medium');