【问题标题】:Need a shortcode that outputs all attachment ids from a post需要一个从帖子中输出所有附件 ID 的简码
【发布时间】:2023-03-16 03:22:01
【问题描述】:

我需要一个 wordpress 短代码,它输出以逗号分隔的帖子的所有图像附件 ID。

类似于 [get-image-ids] 的东西输出“11,12,13”,因为我需要它在另一个短代码中使用,即 Divi 短代码。我对 PHP 有非常基本的了解。

是这样的,只是它使用来自自定义帖子类型的元键“wpcf-gallery-images”。我只需要当前帖子的图片附件的 ID。

function prefix_get_img_ids($atts) {
global $post;

 $images = (array) get_post_meta($post->ID, 'wpcf-gallery-images', false); // cast to array in case there is only one item
 $ids = array();

 global $wpdb;

 foreach($images as $img) {
  $query = "SELECT ID FROM {$wpdb->posts} WHERE guid='$img'";
  $id = $wpdb->get_var($query);
  $ids[] = $id;
 }

 return implode(",",$ids);
}
add_shortcode("get-image-ids", "prefix_get_img_ids");

然后你可以使用 [gallery ids="[get-image-ids]"] 这就是我需要的。

【问题讨论】:

    标签: wordpress gallery attachment shortcode


    【解决方案1】:

    您使用的是什么图库插件?好像应该已经支持了。

    做到这一点的唯一方法是修改图库插件以在该特定参数上调用 do_shortcode()

    例如

    $atts['get-image-ids'] = do_shortcode($atts['get-image-ids']);
    

    但是,这不是处理此问题的正确方法,因为您应该更新图库插件本身以执行 get_post_meta($post->ID, 'wpcf-gallery-images', false); 代码 - 而不是嵌套短代码(通过 do_shortcode),这就像使用大锤杀死苍蝇一样。

    告诉我您正在使用哪个图库插件,我可能会找到正确的方法,我想它已经以某种方式受到支持。

    【讨论】:

    • 不,不,忘记元键。当您需要以自定义帖子类型输出转发器字段的内容时,这只是一个示例。它不适用于我的需求。我只需要链接到帖子的图像的附件 ID,而不是转发器字段的内容。
    【解决方案2】:

    我想为此使用 Gallery DIVI 模块。 这是 DIVI 使用的简码:

    [et_pb_gallery _builder_version="3.24" gallery_ids="23219,23218,23217,23215,23216,23214,23213,23212,23211,23209" posts_number="20" show_title_and_caption="off" show_pagination="off" zoom_icon_color="#ffffff" hover_overlay_color="rgba(6,83,182,0.5)" hover_icon="%%47%%" hover_icon_tablet="%%47%%" hover_icon_phone="%%47%%" box_shadow_vertical_image_tablet="0px" box_shadow_blur_image_tablet="40px" box_shadow_spread_image_tablet="0px" text_shadow_horizontal_length="text_shadow_style,%91object Object%93" text_shadow_horizontal_length_tablet="0px" text_shadow_vertical_length="text_shadow_style,%91object Object%93" text_shadow_vertical_length_tablet="0px" text_shadow_blur_strength="text_shadow_style,%91object Object%93" text_shadow_blur_strength_tablet="1px" title_text_shadow_horizontal_length="title_text_shadow_style,%91object Object%93" title_text_shadow_horizontal_length_tablet="0px" title_text_shadow_vertical_length="title_text_shadow_style,%91object Object%93" title_text_shadow_vertical_length_tablet="0px" title_text_shadow_blur_strength="title_text_shadow_style,%91object Object%93" title_text_shadow_blur_strength_tablet="1px" caption_text_shadow_horizontal_length="caption_text_shadow_style,%91object Object%93" caption_text_shadow_horizontal_length_tablet="0px" caption_text_shadow_vertical_length="caption_text_shadow_style,%91object Object%93" caption_text_shadow_vertical_length_tablet="0px" caption_text_shadow_blur_strength="caption_text_shadow_style,%91object Object%93" caption_text_shadow_blur_strength_tablet="1px" pagination_text_shadow_horizontal_length="pagination_text_shadow_style,%91object Object%93" pagination_text_shadow_horizontal_length_tablet="0px" pagination_text_shadow_vertical_length="pagination_text_shadow_style,%91object Object%93" pagination_text_shadow_vertical_length_tablet="0px" pagination_text_shadow_blur_strength="pagination_text_shadow_style,%91object Object%93" pagination_text_shadow_blur_strength_tablet="1px" box_shadow_horizontal_tablet="0px" box_shadow_vertical_tablet="0px" box_shadow_blur_tablet="40px" box_shadow_spread_tablet="0px" z_index_tablet="500" /]
    

    我想做的是替换这个gallery_ids="23219,23218,23217,23215,23216,23214,23213,23212,23211,23209"

    使用短代码将附加图像的 ID 输出到后分隔的 por 逗号中,如下所示:

    gallery_ids="[get-image-ids]"
    

    这样我就可以为我的自定义帖子类型使用页面模板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-22
      • 2023-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多