【问题标题】:Output single post tag in Wordpress php在 Wordpress php 中输出单个帖子标签
【发布时间】:2020-09-09 16:14:28
【问题描述】:

我正在 WordPress 中编辑类别和标签存档页面的主题模板,并使用以下内容成功打印了类别。

    <div class='avia-section-search'>
    <div class='container'>
    
    <?php 
    echo "<h2 class='entry-content-wrapper'>Level: ";
    global $post;
    $postcat = get_the_category( $post->ID );
    if ( ! empty( $postcat ) ) {
    foreach ($postcat  as $nameCategory) {
    echo $nameCategory->name .' ';   
        }                                      
    }
            "</h2>";

    ?>
    
    </div>
    </div>

我已经调整了标签的代码,但它打印了帖子的所有标签

    global $post;
    $posttags = get_the_tags( $post->ID );
    if ( ! empty( $posttags ) ) {
    foreach ($posttags  as $nameTags) {
    echo $nameTags->name .' ';   
        }                                      
    }

理想情况下,我只需要打印用户选择的当前标签。

非常感谢任何帮助。

谢谢 理查德

【问题讨论】:

  • WP 函数将获取与帖子关联的所有标签,除非您告诉它,否则它不知道要获取哪个标签。用户如何选择标签?标签是否在 URL 中,如果是,您能否向我展示 url 的示例,以及它使用的是哪个模板文件,以便我更好地了解您的设置?
  • 这是有道理的。是的,标签在 URL 中,使用 WordPress 设置中的自定义结构选项,即 /tag/international/ 我正在使用 archive.php 和 tag.php 来实现。
  • 嗨@RichardSlade 下面的答案对您有帮助吗?如果是这样,请选择一个“正确”答案(通过单击答案旁边的复选标记)关闭问题,或者自己提供一个答案并选择它作为正确答案。否则,请在答案下方添加 cmets 或编辑您的原始问题以添加更多详细信息,以便提供额外的帮助。这将帮助我们。 (还请记住,鼓励投票是为了奖励特别有用的答案 - 并且也可以对您勾选的答案进行投票。)谢谢!

标签: php wordpress tags


【解决方案1】:

正如您所见,WP 函数会返回帖子上的所有标签,因为它们不知道要获取哪个标签。我们需要做的是获取用于显示帖子的标签。

有两种方法可以做到这一点:

1.使用single_tag_title() function获取标签名称
默认情况下,这会将标签的标题回显到屏幕上,例如:

<h1><?php single_tag_title(); ?></h1>

...或者您可以将false 作为第二个参数传入,以防止它被输出,以便您可以将其保存为变量。

<?php $title = single_tag_title('', false); ?>

2。获取标签的所有详细信息:
存档页面(如您正在使用,或其他页面,如果正在使用)将执行使用所选标​​签的 slug 的查询。这意味着我们可以得到查询的对象。

在这种情况下,我们得到一个WP_Term object,其中包含术语信息查询的详细信息,例如 slug、标签 ID 等:

    $page_tag = get_queried_object();

    // now you can do whatever you want with the tag, e.g. 
    $tag_name =   $page_tag->name;  
    $tag_slug =   $page_tag->slug;  
    $tag_id =     $page_tag->term_id;  
    $tag_parent = $page_tag->parent;  

更新:使用您自己添加到问题中的代码:

1. single_tag_title()

<div class='avia-section-search'>
  <div class='container'>   
    <h2 class='entry-content-wrapper'><?php single_tag_title(); ?></h2> 
  </div>
</div>

2。 get_queried_object()

<div class='avia-section-search'>
  <div class='container'>   
    <h2 class='entry-content-wrapper'>
        <?php 
        $page_tag = get_queried_object();
        echo $page_tag->name; // echo the tag name
        ?>
    </h2> 
  </div>
</div>

【讨论】:

  • 感谢您的建议。很难让它通过。我不擅长 PHP,所以不知道在哪里放置这两种解决方案。尝试适应,但不断出错。
  • @RichardSlade 您应该能够在您在问题中添加代码的同一位置添加它 - 听起来它可能只是您添加它的语法错误。如果您编辑您的问题以包含围绕您要替换的代码的几行代码,我可以向您展示您需要添加的内容。
  • 好的,谢谢我更新了用于类别的代码。我正在使用一个名为 Enfold 的主题,它有一些特定的 php 要求。
  • @RichardSlade 我已经用代码更新了我的答案,您可以使用它来替换创建标题的现有代码 - 如果这可行或者您需要更多帮助,请告诉我!
  • 非常好,完美运行,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2021-08-23
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 2018-12-15
相关资源
最近更新 更多