在网络上的另一个博客中获得来自自定义分类的逐个帖子?

时间:2013-05-03 作者:jerime

在我设置的自定义分类法中,我很难按术语获取帖子。问题是这是一个多站点,我从网络上注册分类法的另一个博客中获得了这些数据。我的代码在注册分类法的博客上运行良好。然而,当我在另一个博客上使用switch\\u to\\u blog尝试相同的代码时,我得到了bool(false)。我想这意味着sql中有一个错误。然而,如果我只做is\\U术语,我可以确认它在那里。这里有一个链接,指向naitive博客上的代码,但另一个没有,

<?php get_header(); ?>

<?php global $switched; switch_to_blog(2); ?>

<div class="row-fluid mostwanted-container">

<?php
    $type = \'portal_warrants\';
    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
    $terms = is_term( \'most-wanted\' , \'warrant_status\' );
    $args=array(
            \'post_type\' => $type,
            \'posts_per_page\' => 6,
            \'paged\' => $paged,
            \'tax_query\' =>
                    array(
                            array(
                                    \'taxonomy\' => \'warrant_status\',
                                    \'field\' => \'id\',
                                    \'terms\' => \'most-wanted\',
                            )
                    )

            );                                       

    $my_query = null;
    $my_query = new WP_Query($args);
    $i = 0;
    if( $my_query->have_posts() ) {
            while ($my_query->have_posts()) : $my_query->the_post();

            if( $i % 3 == 0) :?>
                    </div>
                    <div class="row-fluid mostwanted-container">
            <?php endif; ?>
            <?php print_r(var_dump($wp_query->request)); ?>                
            <div class="span4 wanted">
                    <h1>Wanted</h1>
                    <div class="mostwanted-img">
                            <img src="http://placehold.it/150x170">
                            <span class="arrested">Arrested</span>
                    </div>
                    <div class="mostwanted-info">
                            <h3><?php the_title(); ?></h3>
                            <ul>
                                    <li><strong>Last Known Address:</strong></li>
                                    <li><strong>Hair:</strong></li>
                                    <li><strong>Eyes:</strong></li>
                                    <li><strong>Height:</strong></li>
                                    <li><strong>Weight:</strong></li>
                            </ul>
                    </div>
            </div> 

    <?php $i++ ?>  

<?php endwhile; } wp_reset_query(); ?> 

</div> 

<?php restore_current_blog(); ?>

<?php get_footer(); ?>
*编辑(更新了pastebin,包括switch\\u to\\u blog)

http://pastebin.com/uBbaXnSt

而且,这根本不会输出任何东西即使print_r(var_dump($my_query->request));

溶液(或至少部分)

问题是switch_to_blog 不允许您访问网络上其他博客中的所有内容,包括分类法、标记和功能中的内容。php,尽管不要完全引用我的话。因此,分类法没有在“切换到”博客中注册。我的解决方案(至少目前)在该博客中注册分类法。这样做之后,tax_query 按预期工作。这就是我要做的,直到我找到一个更好的解决方案(如果存在的话)。

4 个回复
最合适的回答,由SO网友:jerime 整理而成

解决方案(或至少部分)

问题是switch\\u to\\u blog不允许您访问网络上另一个blog中的所有内容,包括分类法、标记和功能中的内容。php,尽管不要完全引用我的话。因此,分类法没有在“切换到”博客中注册。我的解决方案(至少目前)在该博客中注册分类法。完成后,tax\\u查询按预期工作。这就是我要做的,直到我找到一个更好的解决方案(如果存在的话)。

SO网友:gabrielperezs

我发现了一个小技巧,可以通过分类法进行过滤,而不用在子主题中创建分类法。

核心中存在着“功能”taxonomy_exists“:

function taxonomy_exists( $taxonomy ) {
        global $wp_taxonomies;

        return isset( $wp_taxonomies[$taxonomy] );
}
这个函数配置单元为“false”,因为分类法不存在于您的子主题中。如果此函数将类设置为“false”WP_Tax_Query“”将不会返回有效的SQL以按分类进行筛选。

所以,就像@jerime所说的“我的解决方案(至少现在)在那个博客中注册分类法”。

您只能通过“创建”分类来进行此筛选,例如:

// Add this before the loop
// The if is to don\'t touch the taxonomy if is a real taxonomy
// The "delete" value is to know this is not a real taxonomy
global $wp_taxonomies;
if(!taxonomy_exists(\'warrant_status\'))
    $wp_taxonomies[\'warrant_status\'] = \'delete\';

// The normal loop
$args=array(
        \'post_type\' => $type,
        \'posts_per_page\' => 6,
        \'paged\' => $paged,
        \'tax_query\' =>
                array(
                        array(
                                \'taxonomy\' => \'warrant_status\',
                                \'field\' => \'id\',
                                \'terms\' => \'most-wanted\',
                        )
                )

        );                                       

$my_query = null;
$my_query = new WP_Query($args);

// After finish the loop, remove the hack
// do the if to don\'t delete a real taxonomy
if ($wp_taxonomies[\'warrant_status\'] == \'delete\')
    unset($wp_taxonomies[\'warrant_status\'])

SO网友:Cole

这是一个长期目标,假设您的所有分类都已设置并被正确查询。

但既然你在使用wp_reset_query() 无论如何,尝试使用query_posts() 与您的$args 和使用while(have_posts() : the_post()) 而不是做一个新的WP_Query() 班然后restore_current_blog() 在您的wp_reset_query() 在最后。

此外,由于其$wp_query$my_query. 如果要查看$wp_query 对象,您需要global $wp_query; 在它之前的某个地方。

更好的答案。。

不知道为什么我以前没有注意到。。您的tax\\u查询字段设置为id not slug。将$参数更改为。。

$args = array(
            \'post_type\' => $type,
            \'posts_per_page\' => 6,
            \'paged\' => $paged,
            \'tax_query\' =>
                    array(
                            array(
                                    \'taxonomy\' => \'warrant_status\',
                                    \'field\' => \'slug\',
                                    \'terms\' => \'most-wanted\',
                            )
                    )

            );

SO网友:Bagot.pro

同样的问题,我的解决方案:

$queryterms = "
    SELECT *
    FROM wp_".$site->blog_id."_terms terms, wp_".$site->blog_id."_term_taxonomy term_taxonomy, wp_".$site->blog_id."_term_relationships term_relationships 
    WHERE (terms.term_id = term_taxonomy.term_id AND term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id)
    AND term_relationships.object_id = ".$post->ID."
    ";
$terms = $wpdb->get_results($queryterms, OBJECT);
foreach ($terms as $term) {
    // Your stuff
};

结束

相关推荐

使用Get_the_Terms拉入分类链接?

我对获取当前帖子类别(自定义分类法公文包类别)的get\\u the\\u terms php有问题。我可以成功进入最后一类。如果查看此页面,您将看到顶部的链接:http://www.slarc.com/portfolio-view/central-control-building-east-texas/ 这些链接是通过get\\u the\\u ters\\u列表拉入的,但这些链接没有:www.slarc。com/it前面的项目。在那里我需要它跳转到一个具有相同段塞的页面。这就是为什么我开始使用下面的代