Wordpress:显示常规帖子中自定义帖子类型的内容

时间:2014-04-01 06:06:52

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

我觉得这个问题有一个非常简单的解决方案。然而,在试图解决它大约3个小时失败后,我谦卑地来找你。

基础知识:

  • 自定义帖子类型," band "已创建,并且有几个 自定义字段(通过Advanced Custom Fields创建 插件。)

问题:

如何获取并显示特定 频段 条目的内容(特别是自定义字段数据)(使用其 ID slug 里面? (见下面的diagram

this diagram http://thisnewband.com/images/diagram.png

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

我们必须提供ID / title / slug,以便它知道 band 帖子的内容到显示

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

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

  1. 简码

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

    • 在帖子编辑页面上的自定义字段中输入ID(21)。
    • 直接将其编入到帖子模板中:
      • 已使用WP_Query并从自定义字段拉出数组中的ID
    • 结果:没有什么好事发生。
  3. 我遇到麻烦的地方:

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

    最佳解决方案:

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

    1. 创建一个PHP模板,其中包含如何显示单个 Band 内容的代码。 (包括循环)。示例名称: band-block.php
    2. 使用get_template_part('band-block');来回显此代码(通过 functions.php 发布模板或短代码)
    3. 感谢您的帮助!如果您想查看我的任何代码,请与我们联系。

3 个答案:

答案 0 :(得分:1)

我知道你找到了解决问题的方法,但对于其他人,我会给他们另一个解决方案:

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

抱歉我的英文不好;) 干杯

答案 1 :(得分:0)

Hobo的帮助下,我得到了一个解决方案!

主要问题是尝试按“ID”进行查询。无论我们尝试了什么,它都从未运作良好。 (这可能是Advanced Custom Fields存储ID字段内容的方式。)

做了什么工作:

  1. 为帖子页面创建了一个自定义字段,用于将 Band (自定义帖子类型)帖子名称/ slug放入其中。 (自定义字段名为post-band-name,使用Advanced Custom Fields插件创建。)
  2. 将查询代码放在帖子模板中。 (见下面的代码)
  3. 完成。
  4. The Solution Code

答案 2 :(得分:0)

在正常循环后添加此循环...

<?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;
?>