当前位置: 首页 > 知识库问答 >
问题:

从Wordpress中自定义帖子类型的类别中获取ACF文本字段值

徐景明
2023-03-14

我试图创建另一个类使用从ACF PRO的文本字段的值。

我有一个名为“投资组合”的自定义帖子类型,它有4个类别,ACF字段设置被添加到“分类等于类别”。

当我编辑一个类别时,我填写我想要得到的名称,然后显示如下:

<div class="grid-item-catalog catalog-project-Holder **the name need to be here**">

如何从类别中获取ACF字段值?

其他信息:我的页面模板page-portfolio.php,我使用的是ACF中继器。

这是我的代码

<!-- catalog -->
<div class="grid-catalog catalog-portfolio-wrraper">  
  <?php if ( $query->have_posts() ) {  while ( $query->have_posts() ) { $query->the_post(); ?>
     <!-- Repeater -->
     <?php if( have_rows('portfolio-projects-repeater') ){ ?>
        <?php while( have_rows('portfolio-projects-repeater') ) { the_row(); 
          // vars
          $projectDescription = get_sub_field('project-name');
          $projectImage = get_sub_field('project-image');
          $projectLinkText = get_sub_field('project-link-text');
          $projectLink = get_sub_field('project-link');                                                       
          ?> 
             <div class="grid-item-catalog catalog-project-Holder {the name need to be here}"> 
                  <div class="catalog-project-name"><?php the_title(); ?></div>
                  <div class="catalog-project-content-container">
                     <div class="catalog-project-image"><img src="<?php echo $projectImage['url']; ?>" alt="<?php echo $projectImage['alt'] ?>" /></div>
                     <div class="catalog-project-content">
                        <div class="description-link-container">
                             <div class="description"><?php echo $projectDescription; ?></div>
                             <div class="link"><a href="<?php echo $projectLink; ?>" target="_blank" rel="nofollow"><?php echo $projectLinkText; ?></a></div>
                        </div>
                     </div>
                  </div>
              </div>
        <?php } ?>
    <?php } ?>
    <!-- End Repeater --> 
    <?php } ?>
  <?php } ?>
</div>
<!-- end catalog -->

这是该类别ACF字段设置的屏幕截图,希望对您有所帮助:

共有3个答案

向苗宣
2023-03-14

Yaaaayyy...我成功了,用这个代码:

         <?php
            // load all 'category' terms for the post
            $terms = get_the_terms( get_the_ID(), 'category');
            // we will use the first term to load ACF data from
            if( !empty($terms) ) {
                $term = array_pop($terms);
                $custom_field = get_field('category-name', $term );
            }
          ?>  

无论如何,我要感谢你的回复,我非常感激。

陈扬
2023-03-14

在代码中,您正在变量中保存一个名为项目名称的自定义字段:

$projectDescription = get_sub_field('project-name');

也许您应该将子字段的这个元键更改为“项目描述”,如果您也有项目的名称,这可能会令人困惑。

要在php中输出值,请使用

您正在访问一个名为的中继器中的值。所以你的字段在里面,需要像你一样使用一段时间来访问。

您的屏幕截图显示了一个文本字段,该字段不在repeater字段内。

因此,如果要获取该字段的值,只需使用get\u field()。这不需要在一段时间内完成,也不需要使用get\u sub\u field调用。

因此,您的代码应该如下所示:

    $variableName = get_field('category-name');

保存到变量后,只需使用以下命令将其输出:

<div class="grid-item-catalog catalog-project-Holder <?php echo $variableName; ?>"> 

吴松
2023-03-14

如果我理解正确,您有一个自定义的帖子类型“投资组合”,您希望获得帖子所属类别的ACF字段值。这些类别在默认的Wordpress类别(即不是自定义分类法)。这与文章有关,而不是中继器中的值。

如果是这种情况,您可以获得如下类别的ACF字段值(类别名称):

$category_name = get_field('category-name', $category_id);

这意味着我们需要在您的循环中获取帖子的类别ID,您可以使用get\u the \u category(假设它是默认类别,对于自定义分类法,您需要get\u the \u terms)。还请注意,一篇文章可以有多个类别,因此get\u这些类别将返回一个数组:

$category_classes = "";
// 1. GET THE CATEGORIES FOR THE CURRENT POST IN THE LOOP
$categories = get_the_category( get_the_ID()); 
if ( $categories ) {
    // 2. A POST CAN HAVE MULTIPLE CATEGORIES SO LOOP THROUGH THEM TO LOOK UP THE ACF FIELD
    foreach ( $categories as $category ) {
        // 3. ADD ALL ACF VALUE FOR THIS CATEGORY TO OUR $category_classes VARIABLE, SEPARATED BY SPACES
        $category_classes .= " ".get_field('category-name', $category->term_id);
    }        
}

现在$category_classes将有一个空格分隔的类别的ACF值列表,您可以直接在您的class属性中使用,即。

<div class="grid-item-catalog catalog-project-Holder <?php echo $category_classes; ?>"> 

把这个放到你的代码中,应该是这样的:

<!-- catalog -->
<div class="grid-catalog catalog-portfolio-wrraper">  
<?php if ( $query->have_posts() ) {  while ( $query->have_posts() ) { $query->the_post(); ?>

    <?php
    /* YOUR CODE TO GET THE POST CATEGORIES AND LOOK UP THE ACF FIELD VALUE */
    $category_classes = "";
    // 1. GET THE CATEGORIES FOR THE CURRENT POST IN THE LOOP
    $categories = get_the_category( get_the_ID()); 
    if ( $categories ) {
        // 2. A POST CAN HAVE MULTIPLE CATEGORIES SO WE NEED TO LOOP THROUGH THEM ALL
        foreach ( $categories as $category ) {
            // 3. ADD ALL ACF VALUE FOR THIS CATEGORY TO OUR $category_classes VARIABLE, SEPARATED BY SPACES
            $category_classes .= " ".get_field('category-name', $category->term_id);
        }        
    }
    ?>

  <!-- Repeater -->
  <?php if( have_rows('portfolio-projects-repeater') ){ ?>
    <?php while( have_rows('portfolio-projects-repeater') ) { the_row(); 
      // vars
      $projectDescription = get_sub_field('project-name');
      $projectImage = get_sub_field('project-image');
      $projectLinkText = get_sub_field('project-link-text');
      $projectLink = get_sub_field('project-link');                                                       
      ?> 

         <?php 4. OUTPUT THE CLASSES FOR THE DIV ?>
         <div class="grid-item-catalog catalog-project-Holder <?php echo $category_classes; ?>"> 

         <!--   the rest of your code here   -->

          </div>
      <?php } ?>
    <?php } ?>
    <!-- End Repeater --> 
    <?php } ?>
  <?php } ?>

这段代码没有经过测试,但至少应该指向正确的方向:)

 类似资料:
  • 我使用ACF,有一个名为“关于”的页面模板,我的“关于我们”页面使用该模板。我还有一个主页模板,它使用我的“主页字段组”中的字段。我的“关于我们”页面显示“关于字段组”中的ACF字段以及我的“主页字段组”中的一些字段。 我从我的主页组通过引用以下php代码的ACF字段得到字段: 来自主页上的主页字段组,段落来自我的关于我们页面介绍字段,来自关于字段组。 我想做一些类似的事情,但从自定义帖子类型(不

  • 我可以使用自定义字段值获取数据吗?我的是,字段名是。那么,如何使用获取所有数据呢? 代码如下: 此代码不起作用。

  • 我有两个不同类别的自定义帖子类型(公文包),然后我有两个页面显示两个类别的帖子。 我调用页面时的url类似于mysite.com/pagename,其中pagename与公文包类别同名。 我的问题是,当我进入单一公文包时,url会变成mysite.com/portfolio/portfolio-name 有没有办法在url中显示投资组合类别?应该像mysite.com/portfolio-cate

  • 我有一个自定义的帖子类型和一个像这样创建的公文包分类法: 当我在查询中使用它时,它的工作原理应该是这样的。它显示在后端的菜单中,以及此自定义帖子类型的类别。 我的问题是,当我尝试从某个类别检索所有帖子时(通过单击类别名称),我发现

  • 本文向大家介绍WordPress 3.0中的自定义帖子类型,包括了WordPress 3.0中的自定义帖子类型的使用技巧和注意事项,需要的朋友参考一下 本文与WordPress 3.0相关。此处发布的许多代码在以前的版本中将不起作用,并且某些信息可能会在较新的版本中更改。 WordPress已经在系统中内置了五种不同的内容类型。 帖子 这是标准的内容类型,通常是博客安装中使用最多的内容。帖子往往会

  • 在我的帖子页面(常规帖子类型)中,我设置了一个ACF关系字段。在这个里面,我可以选择公司名称,这些名称都在directory_listings的职位类型下。 现在,我在directory listings页面上有以下代码,因此使用simply get_字段不起作用,因为这些值不在该页面上,而是在POST类型的其他位置。 因此不确定如何获取信息。 目录_LISTINGS post type下某个页面