看到本地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>
SO网友:lowtechsun
在拥有a really good chat that taught me a lot 具有janh2 我们提出了这个解决方案,解决了这个问题。通过聊天阅读,从我的错误中吸取教训。
我没有像以前那样使用这种方法less 代码,它也将在实时服务器上工作。
因为WP会自动查找category-$slug.php
文件如果您在存档(类别)页面上,请创建一个名为category.php
在主题根文件夹中。因为category.php
获取当前类别。
因为我有category-photos.php
在template-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.php
或
page-$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 用于获取具有正确数据的查询对象。