【问题标题】:Wordpress: Display content from a Custom Post Type within a regular PostWordpress:在常规帖子中显示自定义帖子类型的内容
【发布时间】:2014-05-11 18:21:18
【问题描述】:

我觉得这个问题有一个非常简单的解决方案。但是,在尝试解决了大约 3 个小时没有成功后,我虚心地来找你。

基础知识:

  • 已创建自定义帖子类型“band”,并包含多个 自定义字段(通过 Advanced Custom Fields 创建 插件。)

问题:

我如何获取和显示特定 band 条目的内容(特别是自定义字段数据)(使用其 IDtitleslug) inside 的常规帖子? (见下文diagram


(来源:thisnewband.com
.

触发自定义帖子类型显示的方法:

我们必须提供 ID/标题/slug 以便它知道 乐队 要显示的帖子内容

  • 短代码(例如[band id="21"])(添加到帖子内容中
  • 自定义字段(自定义字段名称band-id,您可以在其中输入乐队的ID

我尝试了什么以及为什么它不起作用:

  1. 简码

    • `[band id="21"] 在帖子编辑器字段中插入
    • 使用WP_Query 查询 type=bandID="21" 的帖子。
    • 代码位于functions.php
    • 结果:它会回显静态文本,但不会显示任何特定于帖子的内容(乐队名称等)。也不会提取特定于帖子的自定义字段数据。
    • (也尝试过query_post,但没有成功)
  2. 自定义字段

    • 在帖子编辑器页面的自定义字段中输入了 ID (21)。
    • 直接将其编码到帖子模板中:
      • 使用 WP_Query 并从自定义字段中提取数组中的 ID
    • 结果:没有发生任何好事。

我一直遇到麻烦的地方:

  • 在实际帖子中很难从自定义帖子类型中提取自定义字段数据

最佳解决方案:

无论是使用简码、自定义字段还是新的小部件,如果可以的话,这将是最简单的:

  1. 使用代码创建一个 PHP 模板,以说明单个 Band 内容应该如何显示。 (包括循环)。示例名称:band-block.php
  2. 使用get_template_part('band-block'); 回显此代码(在帖子模板中或通过functions.php 的简码)

感谢您的帮助!如果您想查看我的任何代码,请告诉我。

【问题讨论】:

  • 您的简码方法看起来应该可行。您如何检索特定于帖子的内容?您是否将波段 ID 作为第二个参数提供给 the_field(或 get_field)?

标签: custom-post-type wordpress advanced-custom-fields


【解决方案1】:

Hobo 的帮助下,我想出了一个解决方案!

主要问题是尝试通过“ID”进行查询。无论我们尝试什么,它都无法正常工作。 (这可能是Advanced Custom Fields 存储 ID 字段内容的方式。)

什么有效:

  1. 为帖子页面创建了一个自定义字段,用于放置 乐队 (自定义帖子类型) 帖子名称/标签。 (自定义字段名为 post-band-name 并使用 Advanced Custom Fields 插件创建。)
  2. 将查询代码放在帖子模板中。 (见下面的代码)
  3. 完成。

The Solution Code

【讨论】:

    【解决方案2】:

    我知道您已经找到了解决问题的方法,但对于其他人,我会给他们其他解决方案:

    可以通过ID查询,没问题。看看这些:http://www.advancedcustomfields.com/resources/field-types/relationship/ 但是您必须在自定义字段“返回格式”中选中“帖子 ID”框。然后它工作得很好。

    对不起,我的英语不好;) 干杯

    【讨论】:

    • 请不要发布仅链接的答案。
    【解决方案3】:

    在正常循环之后添加这个循环...

    <?php /* Display all the author's posts from the custom post type ('band') */ ?>
    <?php
        $authorid = get_the_author_meta( ID, $userID );
               $args4=array('author'=>$authorid,'post_type'=>'band', 'numberposts'=> -1);
               $cquery4=new WP_Query($args4);
               if($cquery4->have_posts()):
                   while($cquery4->have_posts()):
                       $cquery4->the_post();
               ?>
    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                   <p><?php the_title();?></p>
    </a>
               <?
                   endwhile;
                    wp_reset_postdata();
               endif;
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多