定制帖子类型和定制分类的条件查询

时间:2011-06-30 作者:Larry4Design

我正在从事一个项目

一种称为“经验陈述”的自定义邮件类型,附于称为“专业知识”的邮件类型的自定义分类法,自定义分类法有6个不同的术语:沿海、内陆、海洋、水道、船舶、电信,这很好,我已经创建了6个不同的模板页面,每个页面都有这个循环(我只是更改了每个页面的术语)<?php $page = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; query_posts("post_type=experiencestatements&expertise=coastal&showposts=10&paged=$page"); if ( have_posts() ) : while ( have_posts() ) : the_post() ?>

所以,这很好,但我必须创建一个不同的模板页面:即page exp stmt coastal。每个术语的php。我想只有一个模板页,每个学期都有条件语句,而不是6个(和计数)模板页。有6多个不同的页面意味着每次客户需要调整时,我都必须进去更改每一个页面。

总之,我需要一些帮助来创建一个条件标记,根据分类术语来更改循环。我不知道该怎么做。非常感谢您的帮助。

谢谢,拉里

2 个回复
SO网友:Wyck

有几种方法可以做到这一点,其中一种方法是get_the_terms.

逻辑是运行循环,并根据该分类法的术语自定义输出(这可能不是现成的)。

//do a custom query here if needed
 if ( have_posts() ) : while ( have_posts() ) : the_post();

 $terms = get_the_terms($post->ID, \'Expertise\');
//this will return and array of terms for your Expertise taxonomy.

   foreach ( $terms as $term ) {

     if($term->name == \'marine\') {

       // do custom stuff here 

     }elseif($term->name == \'waterway\') {

       // do custom stuff here
     }elseif .... 
在你发表评论之后,你似乎不希望每个术语都有自定义内容,也就是说所有6个术语都有相同的内容,这可以通过一个查询循环来完成,同样有几种方法可以做到这一点
http://codex.wordpress.org/Class_Reference/WP_Query

$args = array(
    \'tax_query\' => array(
        \'relation\' => \'AND\',
        array(
            \'taxonomy\' => \'Expertise\',
            \'field\' => \'slug\',
            \'terms\' => array( \'marine\', \'waterway\', \'you_other_terms_here\' ),
        ),

    )
)
$query = new WP_Query( $args );
另一种方法是使用我最初的建议,只是为所有人做一个匹配get_the_terms 在要使用的阵列中in_array , 它可能类似于(继续上面的原始代码),但在php中有几种方法可以做到这一点:

foreach ( $terms as $term ) {

if (in_array(\'marine\', \'$term\')) && (in_array(\'waterway\', \'$term\')) && etc..
   //do stuff
}

SO网友:helgatheviking

无法创建名为

分类学专业知识。php

依据:http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display

看起来您根本不需要调整循环,因为WP已经在为分类法中的每个术语使用适当的查询了。但是您仍然可以在这里测试术语名称(它将在查询变量中),并根据需要触发不同的显示代码。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register