基于父类别更改Single.php模板

时间:2016-05-12 作者:rezon8dev

我有以下代码可以使用,但split()被贬低了,在php 7中不可用,我需要一些帮助。这里的想法是将这段代码插入到我的单曲中。php(在子主题中)。访问单个帖子时,代码将进行检查,以查找帖子的父类别,并分配自定义的单个帖子。php文件。在此代码中,“Parent==”是指定要使用的模板的父类别“/single xxx.php”。我需要帮助来重写它,以便在php 4-7、wordpress 4.0+:

<php?
 function get_top_category() {
    $category = get_the_category();
    $cat_tree = get_category_parents($category[0]->term_id, FALSE, \':\', TRUE);
    $top_cat = split(\':\',$cat_tree);

  return $parent = $top_cat[0];
}

//echo \'<pre>\';print_r(get_top_category());echo \'</pre>\';

    $Parent = strtolower(get_top_category());

  if($Parent == "emcp-nur") {
  include(get_stylesheet_directory() . \'/single-emcpn.php\');
}

  else if($Parent == "emcm-nur") {
  include(get_stylesheet_directory() . \'/single-emcmn.php\');
}

  else if($Parent == "emcp-tec") {
  include(get_stylesheet_directory() . \'/single-emcpt.php\');
}

get_header();  ?>
按照同样的思路,我试图用下面的内容来代替这个,我必须把它放在错误的地方。与上面我放置在get\\u header()上方的代码非常相似,脚本应用的帖子最终会复制一个页面,然后复制下一个页面,因此显然存在错误。下面是实现同样目标的另一次尝试:

if (has_term(\'emcp-nur\', \'category\', $post)) get_template_part(\'single\', \'emcpn\');

else if(has_term(\'emcm-nur\', \'category\', $post)) get_template_part(\'single\', \'emcmn\');

else if(has_term(\'emcp-tech\', \'category\', $post)) get_template_part(\'single\', \'emcpt\');

else get_header();  ?>
但是,由于代码中的错误,该代码导致了相同的问题,即它所应用的帖子复制了显示。

1 个回复
SO网友:cjbj

我不知道我们的single-XXX.php 文件看起来像,但如果它们包含调用get_header (也许get_sidebar()get_footer) 很明显,在第一个代码块的底部(可能还有常规页面的其余部分)再次调用时,您会得到两次标题。

在第二个代码块中,避免两次输出头,因为它位于最终的else语句中,但如果下面有更多代码,则在调用single-XXX.php. 您应该确保whole 常规单页的代码位于else 陈述

否则,您可以创建一个名为single-normal, 将完整代码放在此处并替换该行else get_header(); 在上一个代码块中else get_template_part(\'single\', \'normal\');.