【问题标题】:Wordpress displaying custom post types and their fields显示自定义帖子类型及其字段的 Wordpress
【发布时间】:2012-06-26 22:24:33
【问题描述】:

我设置了一个名为“RELEASES”的自定义帖子类型 - 想想音乐 cd 版本。

此帖子类型包含名为“release_artist”、“release_title”、“release_date”、“release_artwork”和“release_tracklisting”的字段,用于输入所有相关的音乐 cd 信息。

我在我的 Wordpress 模板中实际显示这些信息时遇到了真正的麻烦。 我真的只是很幸运地输出了标题列表,没有其他数据。

知道我在 LOOP 中放了什么来显示所有信息吗?最好每个都在自己的 LIST 项目中,以便我可以单独设置每个项目的样式?

任何想法都非常感谢。

【问题讨论】:

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


    【解决方案1】:

    您可以根据需要使用get_post_meta 拉入您的字段。在您的循环中,您可以从以下内容开始:

    <?php 
        $release_artist = get_post_meta($post->ID, 'release_artist', true); 
        $release_title = get_post_meta($post->ID, 'release_title', true); 
    ?>
    
    <ul>
        <li class="release_artist">
            <?php echo $release_artist; ?>
        </li>
        <li class="release_title">
            <?php echo $release_title; ?>
        </li>
    </ul>
    

    【讨论】:

    • 不幸的是我不能让它工作。我认为这与“ID”方面有关。那个“ID”是从哪里来的?你能为我把上面的代码放在一个简单的循环中吗?我开始认为我在循环中的错误位置(或循环本身不正确)。
    • 如果你向我提供你当前的循环,我可以看看有什么问题。如果没有,我明天应该有时间写一个更深入的例子。
    • 如果我的问题没有意义,我希望在我的网站主页上显示 6 个最新的音乐/CD 版本。因此,每个都将包含艺术家姓名、专辑名称、专辑封面图片和链接/购买按钮。我没有使用我的主页模板将此信息放入而不是自定义帖子类型特定模板。
    • 对我来说 get_post_meta 按预期工作。 $into = get_post_meta($post-&gt;ID, 'introduction', true); $how_to_reach = get_post_meta($post-&gt;ID, 'how_to_reach', true); 然后我可以将它们显示为echo '&lt;p&gt;'.$into.'&lt;/p&gt;'; '&lt;p&gt;&lt;b&gt;How to reach: &lt;/b&gt;'.$how_to_reach.'&lt;/p&gt;';
    【解决方案2】:

    那些是自定义字段吗?如果是,试试what codex.wordpress.org 说的。更好的是,试试ACF plugin

    --编辑

    如果您想在其他页面上显示您的部分页面(例如在您的家中),您需要使用query_posts。这是一个相当简单的功能。对于您的循环,请尝试以下操作:

          <?php
            global $wp_query;
            query_posts(array(
                'post_type' => 'releases'
            ));
    
            while(have_posts()) : the_post(); ?>
                <?php $key = get_post_meta($post->ID, 'Opis nazwy'); ?>
                <li <?php post_class(); ?>><a href="<?php the_permalink(); ?>"><?php if($key) { echo $key[0]; } else { the_title(); }; ?></a></li>
                <?php
            endwhile;
            wp_reset_query();
            ?>
    

    $key 是一个单一的值,这里设置为release_artists。这纯粹是为了测试。如果可行 - 请随意定义您自己的变量。

    【讨论】:

    • 是的,它们是自定义字段 - 我已经对这部分进行了排序 - 我只是无法在我的网站上显示结果。
    • 你到底在做什么?您应该可以在主题文件中简单地echo 它们。最好的方法是为那些特定的帖子类型(如single-releases.php)创建一个页面,然后你可以使用echo get_post_meta($post-&gt;ID, 'release_artist')
    • 这行不通。我不知道为什么。上面示例中的“ID”是动态生成的吗?还是您建议我为每个人硬编码 ID?
    • 我已从 Ryan 的回答中阅读了您的其他 cmets。如果你想在你的主页上显示它,你必须使用query_posts。我已经编辑了我的答案。
    • 您确定这些帖子已发布吗?无论如何,发布您的代码。
    【解决方案3】:

    你应该使用:

    <?php the_field('field_name') ?>
    

    在你的循环中。希望对您有所帮助!

    【讨论】:

      【解决方案4】:

      从我在网上看到的大部分文档来看,query_posts 不应该是创建自定义查询和循环的首选函数。以下代码 sn-p 可能是一个很好的起点。您应该能够在主题模板文件的主循环内部或外部使用它。

      $args = array(
          'post_type' => 'release', //remember this is-case sensitive
          'posts_per_page' => -1,
      );
      
      $releaseQuery = new WP_Query( $args );
      
      if ( $releaseQuery->have_posts() ) :
      while ( $releaseQuery->have_posts() ) :
      $releaseQuery->the_post();
      
      // Fetching the post ID for demonstration and for use later
      $c_id = get_the_ID();
      
      // After running the_post(), alot of the Wordpress functions (not all) can now be used without supplying the post ID.    
      echo get_the_title();
      // You could also have used get_the_title($c_id);
      
      // Then:
      echo get_post_meta($c_id, 'release_title', true); 
      echo get_post_meta($c_id, 'release_artist', true); 
      
      endwhile;
      endif;
      
      // Return to the current page's main query
      wp_reset_query();
      
      // This should now display the page's title
      the_title();
      

      【讨论】:

        【解决方案5】:

        关于你的身份证问题:

        每个项目,如 WordPress 中的帖子和页面都有一个“ID”,但它们通常不会显示在它们的列表中。有许多插件会在您的管理员中添加“ID”列。在 Wordpress.org 中搜索“显示 ID”并选择一个您喜欢的。安装它。激活它。您会看到 ID。

        https://wordpress.org/plugins/search.php?q=show+id

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-29
          • 1970-01-01
          • 1970-01-01
          • 2014-03-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多