在查询中使用帖子标题作为术语,仅使用单字标题

时间:2012-04-09 作者:Chuck

我正在使用get\\u the\\u title为我的查询设置分类术语,在测试中效果很好,直到我有一个包含多个单词的标题,“catalogs”的标题有效,“new catalogs”的标题无效。当我说不起作用时,我的意思是,\\u post\\u缩略图和get\\u post\\u meta不会返回任何内容。

<?php
    $supplier = get_the_title();

    global $post;
    $args = array(
        \'numberposts\' => 1,
        \'post_type\' => \'suppliers\',
        \'taxonomy\' => \'suppliersTax\',
        \'term\' => $supplier,
        \'post_status\' => \'publish\'
    );
    wp_list_categories( $args );
    $homeSOTMHeader = get_posts( $args );
    foreach( $homeSOTMHeader as $post ) :   setup_postdata($post);
?>

    <div id="supplierHeader">
        <div id="supplierLogo" class="alignLeft">
            <?php if ( has_post_thumbnail() ) {the_post_thumbnail();} ?>
        </div>

        <ul id="companyHeaderInfoHorizontal">
            <?php
                $meta = get_post_meta(get_the_ID(), \'sp_homeHeaderCompanyLink\', true); 
                \'\' != $meta and print "<li><a href=\'$meta\' target=\'_blank\'>Company Site</a></li>";

                $meta = get_post_meta(get_the_ID(), \'sp_homeHeaderProductsLink\', true); 
                \'\' != $meta and print "<li><a href=\'$meta\' target=\'_blank\'>Browse Products</a></li>";

                $meta = get_post_meta(get_the_ID(), \'sp_homeHeaderContactsBox\', true);
                \'0\' != $meta and print "<li><a class=\'inline\' href=\'#contactsModal\'>Contacts</a></li>";
            ?>
        </ul>

        <?php endforeach; ?>
        <?php // Reset Post Data
        wp_reset_postdata(); ?>

    </div> <!-- supplierHeader -->

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这个术语需要的是术语的鼻涕虫,而不是人类阅读的描述,所以“hello world”不是“hello world”

尝试使用sanitize_title 功能:http://codex.wordpress.org/Function_Reference/sanitize_title

此外,为循环添加else案例,以捕获“未找到帖子”案例等,当您遇到问题时,最好尽可能多地获取信息。

此外:

    \'taxonomy\' => \'suppliersTax\',
    \'term\' => $supplier,
也可以写为:

    \'suppliersTax\' => $supplier,
edit: 最详细、最精确、最灵活的写作方法是:

\'tax_query\' => array(
    array(
        \'taxonomy\' => \'supplier\',
        \'field\' => \'slug\',
        \'terms\' => sanitize_title($supplier)
    )
)
如图所示:http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

还要查看您在注释中使用的代码:

$homeSOTMHeader = get_posts( $args );

foreach( $homeSOTMHeader as $post ) :   setup_postdata($post);
?>
    // stuff
<?php endforeach;?>
<?php wp_reset_postdata(); ?>
更清楚的做法是使用此选项:

$q = new WP_Query($args);
if($q->have_posts()){
    while($q->have_posts()){
        $q->the_post();
        // stuff
    }
} else {
    ?><p>No Posts were found</p><?php // important information to have for debugging purposes
}
wp_reset_postdata();

结束

相关推荐