微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 WordPress 标签页面上显示帖子和页面?

如何解决如何在 WordPress 标签页面上显示帖子和页面?

wordpress 页面添加标签

当我在 wordpress 标签页面上时,我尝试显示带有相同标签的帖子和页面。我正在使用一些自定义代码来将标签功能添加wordpress 页面。向页面添加标签是有效的,当我在页面模板中使用 <?PHP the_tags(); /> 时,我也可以在页面显示标签

我正在使用此代码(在我的子主题functions.PHP 中)将标记功能注册页面

// Add tag support to pages
function tags_support_all() {
    register_taxonomy_for_object_type('post_tag','page');
}
add_action('init','tags_support_all');

问题 - 带有标签页面显示标签页上

我似乎找不到让这些页面显示标记页面上的方法。它只显示标有相同标签的帖子。没有页面。我使用下面的代码通过将 post_type 设置为“any”来尝试更新 pre_get_posts 查询。这是我在 Google 上找到的一个(旧)片段,为什么我要寻找解决方案。我不确定这是否仍然可行,但我找不到任何可行的替代方案。

// display all post types on tag pages
function tags_support_query($wp_query) {
    if ($wp_query->get('tag')) {
        $wp_query->set('post_type','any');
    }
}
add_action('pre_get_posts','tags_support_query');

关于如何让它工作的任何想法?

一些额外信息

解决方法

创建一个可用于所有标签的新文件并将其命名为 tag.php。这将允许此文件呈现所有与标签相关的存档页面。其他类别和档案将保持不变。

在这个新文件中复制 index.php 的所有内容,但在文件顶部添加以下代码。

/**
 * Get the Term ID of the current term.
 */
$term = get_queried_object();
$term_id = $term->term_id;

/**
 * Get all posts and pages with the current term.
 */
$args = array(
  'post_type'      => array('post','page'),'posts_per_page' => -1,'post_status'    => 'publish','tax_query'      => array(
     array(
       'taxonomy'    => 'post_tag','field'       => 'term_id','terms'       => [$term_id]
     )
   )
);

/**
 * Create a new query.
 */
$query = new WP_Query($args);

然后替换所有出现以下情况的地方:

if ( have_posts() ) {
// replace with
if ( $query->have_posts() ) {

,

while ( have_posts() ) {
// replace with
while ( $query->have_posts() ) {

the_post();
// replace with
$query->the_post();

然后在 while 循环的右括号后,添加 wp_reset_postdata(); 以确保与页面相关的帖子数据已被重置。 (否则循环中的最新帖子将被视为该页面的帖子)。

这应该(至少)允许您访问具有与页面对应的 post_tag 术语的帖子和页面。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。