类别帖子显示在本地安装上,但不显示在实时服务器上

时间:2017-10-22 作者:lowtechsun

看到本地XAMPP服务器上显示类别中的帖子感到困惑,但它们没有显示在实时服务器上。以下是显示类别帖子的代码。

这是一个非常简单的单页导航,每个部分都有链接。front-page.php 将模板零件保存到每个节。index.php 决定是否存在静态页面或类别页面,并提供相应的模板。在文件夹中template-parts 我有category-photos.php 显示照片帖子的。

就像我说的,本地版本运行得很好。在front-page.php 所有部分的所有帖子都显示良好。在photos 帖子也显示在front-page.php 但也在个人分类页面上,意思是example.com/photos 确实可以在本地显示照片帖子。

我还用<!-- category-photos.php --> 这样我就可以在源代码中看到文件是否已加载。它在本地显示在源代码中,在实时服务器上category-photos.php 甚至没有包含在分类页面的源代码中,但确实出现在首页。

我使用WordPress Duplicator 要将WordPress安装、主题文件和数据库完全按原样备份和复制到实时主机。照片帖子也显示在front-page.php 但不在类别页上,example.com/photos. 必须说我试过主题twentyseventeen 当然,在那里,分类照片显示得很好。请问我做错了什么?

不知道从哪里开始查找错误。与托管公司的支持人员进行了交谈,他们说我可能忘记在菜单中包含该类别,但我确实包含了它。。除此之外,他们也没有任何线索。如果有帮助的话,我会尝试对主题进行公开回购,并上传到一个实时虚拟服务器。

index.php

<?php
get_header();

global $wp_query;
$pagename = $wp_query->queried_object->post_name;

// checking if it is a static page or category page
// if the $pagename variable is empty get the category
if(empty($pagename)):
  $current_cat = single_cat_title("", false);
  // get the template for photos, category-photos.php
  get_template_part(\'template-parts/category\', $current_cat);
else:
// else it is a static page
$args = array(
  \'pagename\' => $pagename
);
  $query = new WP_Query($args);
    if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
      // get the template with corresponding page
      get_template_part( \'template-parts/page\', $pagename );
      endwhile;
    endif;
  wp_reset_postdata();
endif;
get_footer();
?>

front-page.php

<?php
get_header();
  // the the template for the photos category, so category-photos.php
  get_template_part( \'template-parts/category\', \'photos\');  
get_footer();
?>

category-photos.php

<?php
$args = array(
    \'category_name\' => \'photos\',
    \'post_type\' => \'post\'
);
// loop over the category photos posts
$query = new WP_Query($args);

echo \'<div class="photos-wrap">\';
if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
  the_title();
  the_content();     
endwhile;
endif;
wp_reset_postdata();
?>
</div>

1 个回复
SO网友:lowtechsun

在拥有a really good chat that taught me a lot 具有janh2 我们提出了这个解决方案,解决了这个问题。通过聊天阅读,从我的错误中吸取教训。

我没有像以前那样使用这种方法less 代码,它也将在实时服务器上工作。

因为WP会自动查找category-$slug.php 文件如果您在存档(类别)页面上,请创建一个名为category.php 在主题根文件夹中。因为category.php 获取当前类别。

因为我有category-photos.phptemplate-parts 文件夹我获取存档页的当前类别,然后使用该类别从template-parts 文件夹

category.php

$current_category = sanitize_post( $GLOBALS[\'wp_the_query\']->get_queried_object() );
$category_slug = $current_category->slug;  
get_template_part(\'template-parts/category\', $category_slug);

category-photos.php

$args = array(
    \'category_name\' => \'photos\',
    \'post_type\' => \'post\'
);
$query = new WP_Query($args);
if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
      the_title();
      the_content();
    endwhile;
endif;
wp_reset_postdata();
因为静态页面和其他页面使用index.php 如果没有其他模板文件,我可以在那里编写下面的代码。我知道一旦category-$slug.phppage-$slug.php WordPress将自动使用该选项。再次,因为我在文件夹中有我的页面模板template-parts 我只需要这个index.php 就这样吧。

index.php

 get_header();
 $current_page = sanitize_post( $GLOBALS[\'wp_the_query\']->get_queried_object() );
 $pagename = $current_page->post_name;
   get_template_part( \'template-parts/page\', $pagename );
 get_footer();
作为参考,我使用this answer 用于获取具有正确数据的查询对象。

结束

相关推荐

为自定义帖子类型/分类设置不同的POSTS_PER_PAGE

我有一个自定义的帖子类型,我想在我的网站上的分类页面上完全显示该帖子类型,而不是网站的常规博客部分。我制作了一个自定义分类法和帖子类型,如下所示:add_action(\'init\', \'create_post_types\'); function create_post_types() { register_taxonomy(\'tips-and-tricks-taxonomy\', \'tat\', array( \'hierarchical\'