从帖子页面WordPress获取当前类别ID

时间:2013-12-19 作者:devjohn

我无法获取当前帖子的类别id。我们正在使用<?php get_the_category( $id ) ?> 用于查找当前职位的类别。如果一个类似于“演示”的帖子有两个类别,如cat1和cat2。当我打开cat1页面,然后转到演示页面时,我想要不同的布局。。当我打开一个cat2页面,然后转到演示页面时,我想用其他布局打开这个演示页面。只有在我确定的情况下才能这样做。。从哪个帖子打来的。。但如何??

5 个回复
SO网友:cjbj

WordPress有一个功能wp_get_referer, 它从http标头获取引用url。因此,如果您从一个类别存档转到一篇文章,那么该类别的名称通常会包含在该url中。这意味着您可以开始single.php 像这样:

$refer = wp_get_referer();
if (strpos($refer, \'category/cat1\') != false) {... do something ...}
elseif (strpos($refer, \'category/cat2\') != false) {... do something else ...}
else {... do a default thing ...}
根据您的设置,此解决方案可能需要一些调整,但我希望总体思路是明确的。

SO网友:Gaffen

<?php $categories = get_the_category( $post->ID ); ?>
这将返回一个类别数组,您可以从中获取id,如下所示:

$categories[0]-> term_id;
如果有多个类别,这将用于数组中的第一个类别。

有关用法的信息,请参阅codex

SO网友:Dharmang

正如Gaffen所说:“根据访问的类别更改帖子布局”

首先是主题中的类别模板页面(即category.php)

获取类别id并将其存储在WordPress Transient选项中。

global $wp_query;

//get category id (or name, slug) and store to the transient api
$categoryId = $wp_query->queried_object->cat_ID;
set_transient( \'category_id_visited\', $categoryId, 1 * HOUR_IN_SECONDS );
现在是单身。php或单贴显示模板页面。

从瞬态中获取值,并相应地更改显示

if ( false === ( $category_id_visited = get_transient( \'category_id_visited\' ) ) ) {
    // this code runs when there is no valid transient set
    //do nothing for now
} else {
    echo \'You came by visiting category: \' . $category_id_visited;
    //delete transient if required, otherwise it will be expired automatically
    delete_transient( \'category_id_visited\' );
}
希望有帮助。

SO网友:jimihenrik

在你的单曲里。例如,可以使用php

if(has_category(\'layout-1\')) {
  // do layout-1-category stuff here
} elseif (has_category(\'layout-2\')) {
  // layout-2 stuff here
} else {
  // stuff for all the other styles/regular stuff
}
更好的是,使用get_template_part 所以,你不只是淹没你的单身。php和各种愚蠢的代码。

SO网友:mjakic

首次获取类别ID:

$cat_id = get_queried_object_id();
然后获取类别名称:

$cat_name = get_cat_name($cat_id)
然后,您可以根据类别名称决定要执行的操作:

if ($cat_name == \'Cat 1\') {
   // ... url = layout-1
} elseif ($cat_name == \'Cat 2\') {
   // ... url = layout-2
}

结束

相关推荐

Get_Posts()在函数中不起作用。php

如果我在任何主题模板中使用以下函数,它将按预期工作。但是,在我的函数中尝试在AJAX函数中使用它时。php,则返回空。$args = array ( \'numberposts\' => 10, \'post_type\' => array(\'topic\',\'reply\'), \'author\' => 454 ); $user_posts = get_posts($args);&#x