我有一个名为“产品”的自定义帖子类型和一个名为“用法”的分类法。在我的“产品”着陆页上,我希望有可以由客户通过所见即所得进行编辑的自定义内容。分类登陆页面也是如此。我的想法是创建伪造的Pages,然后通过ID将内容提取到我的archive-products.php和taxonomy-usage.php模板中,但是我很好奇是否有更好的处理方法。
我有一个名为“产品”的自定义帖子类型和一个名为“用法”的分类法。在我的“产品”着陆页上,我希望有可以由客户通过所见即所得进行编辑的自定义内容。分类登陆页面也是如此。我的想法是创建伪造的Pages,然后通过ID将内容提取到我的archive-products.php和taxonomy-usage.php模板中,但是我很好奇是否有更好的处理方法。
Answers:
第一个解决方案可以使用Settings API并创建2个字段“ Products Description”和“ Usage Description”,然后在模板中显示该字段很容易,例如:
$options = get_option('my_theme_options');
echo $options['prod_description'];
// echo $options['usage_description'];
但是,设置API并不是WP核心的最佳组成部分,可能仅针对不值得的字段创建设置页面。
另一种方法是使用页面(带有自定义页面模板)作为存档。
创建一个页面并将其称为“产品档案”
在其中添加如下内容:
<?php
/*
Template Name: Products Archive
*/
get_header();
if ( have_posts() ) the post();
the_content(); // this will output the page content
$p_query = new WP_Query('post_type=products');
if ( $p_query->have_posts() ) { while( $p_query->have_posts() ) {
$p_query->the_post();
// this will require a 'entry-product.php' where you can put all your product markup
get_template_part('entry', 'product');
} }
wp_reset_postdata();
get_footer();
之后,在您的后端中,创建一个页面并将其分配给刚创建的模板。在页面内容中写任何内容,当您打开页面时,您将看到页面内容和产品。
分类页面也可以这样做。只需更改页面模板和其中的查询即可。
如果出于任何原因需要将其archive-products.php
用作产品档案,则可以选择创建自定义模板,而仅将其用于检索页面内容。
在您的主题中创建一个php文件,并将其命名为'page-prod-description.php'。在此文件中仅放置:
<?php
/*
Template Name: Products Description
*/
wp_safe_redirect( home_url() );
exit();
该文件的作用是创建自定义页面模板。该模板可以连接到网页,但这些网页不能被称为直接的,因为如果你尝试它,你会被重定向到主页。
现在,在您的后端登录并创建一个页面,将其命名为“产品描述”,并分配刚刚创建的页面模板。如果您尝试访问该页面,http://example.com/product-description
您将被重定向到主页。
在产品归档模板中archive-products.php
,您可以使用插入该页面的内容,如下所示:
$desc = get_pages('meta_key=_wp_page_template&meta_value=page-prod-description.php');
if ( ! empty($desc) ) {
$page = array_shift($desc);
echo apply_filters('the_content', $page->post_content );
}
现在您的客户可以登录后端并编辑页面“产品描述”,并且页面内容中写入的所有内容都将显示在存档页面中。
当然,对于分类学存档也可以这样做。
Sloppy
处理此问题的一种方法。但是不幸的是,没有干净的方法可以做到这一点。WordPress,WordPress需要在这里提供一种干净的方法!
main_query
对象,$wp_query
并导致它不输出post_type
针对存档页面上发生的查询的权限。这将使您对过滤器的调用(如pre_get_posts
存档页面的调用)一文不值。这是主要问题。WordPress需要提供一种方法来管理帖子类型档案和分类学档案内容。