如何在WordPress中通过快捷码显示自定义分类子帖子

时间:2013-07-22 作者:Eager2Learn

我的问题是:我在WP命名视频中有自定义分类法,这种分类法的孩子们命名为音乐视频和游戏视频。

在我的WP主题中,这是一个短代码,它显示了主要分类中名为VIDEOS的所有视频帖子:

    <?php
add_shortcode("video", "video_shortcode");
function video_shortcode($atts, $content) {
    extract(shortcode_atts(array(
        "items" => 3,
        "cat" => null,
        "id" => null,
        "nav" => false,
        "order" => "desc",
        "orderby" => "ID",
        "videos" => null
    ), $atts));
    $order       = strtoupper($order);
    $items_count = 0;
    $items_src   = null;
    if ($id == null) {
        $query = array(
            \'post_type\' => \'video\',
            \'orderby\' => $orderby,
            \'order\' => $order,
            \'posts_per_page\' => $items,
            \'cat\' => $cat
        );
        if (of_get_option(\'shortcat_video\', \'1\') == \'1\') {
            $query = array(
                \'posts_per_page\' => $items,
                \'orderby\' => $orderby,
                \'order\' => $order,
                \'post_type\' => \'video\',
                \'tax_query\' => array(
                    array(
                        \'taxonomy\' => \'videos\',
                        \'field\' => \'slug\',
                        \'terms\' => array(
                            $cat
                        )
                    )
                )
            );
        }
        if ($videos != null) {
            $query[\'tax_query\'] = array(
                array(
                    \'taxonomy\' => \'videos\',
                    \'field\' => \'slug\'
                )
            );
        }
        $wp_query_video = new WP_Query($query);
    }
    $items_src .= \'    
   <div class="home-shr clearfix">
      <div class="vdshr-col">
         <div class="home-width">\';
    while ($wp_query_video->have_posts()):
        $wp_query_video->the_post();
        global $post;
        $fix            = the_excerpt_max(0);
        $title          = get_the_title($fix);
        $video          = get_post_meta($post->ID, "video_link", true);
        $image_id       = get_post_thumbnail_id();
        $venue          = get_post_meta($post->ID, "vd_venue", true);
        $data_video     = get_post_meta($post->ID, \'vd_date\', true);
        $time           = strtotime($data_video);
        $pretty_date_yy = date(\'Y\', $time);
        $pretty_date_M  = date(\'F\', $time);
        $pretty_date_d  = date(\'d\', $time);
        $cover          = wp_get_attachment_image_src($image_id, \'video-shortcode\');
        $cover_large    = wp_get_attachment_image_src($image_id, \'photo-large\');
        $no_cover       = get_template_directory_uri();
        $items_src .= \'
            <div class="vdshr-fix wz-last">
               <div class="vdshr-cover">
                  <div class="wz-wrap wz-hover">\';
        if ($image_id) {
            $items_src .= \'
                     <img src="\' . $cover[0] . \'" alt="\' . get_the_title() . \'" />\';
        } else {
            $items_src .= \'
                     <img src="\' . $no_cover . \'/images/no-cover/media-shr.png" alt="no image" />\';
        }
        $items_src .= \' 
                     <div class="he-view">
                        <div class="bg a0" data-animate="fadeIn">
                           <a href="\' . $video . \'" class="vdshr-link a2" data-animate="zoomIn" data-rel="prettyPhoto"></a>
                           <a href="\' . $cover_large[0] . \'" class="vdshr-zoom a2" data-animate="zoomIn" data-rel="prettyPhoto-cover"></a>
                        </div>
                     </div>         
                  </div>
               </div><!-- end .vdshr-cover -->  
               <a href="\' . $video . \'" data-rel="prettyPhoto">
                  <div class="vdshr-info">  
                     <div class="vdshr-title">\' . $title . \'</div>\';
        if ($data_video) {
            $items_src .= \'
                     <div class="vdshr-des">\' . $pretty_date_d . \' \' . $pretty_date_M . \' \' . $pretty_date_yy . \'</div>\';
        } else {
            $items_src .= \'
                     <div class="vdshr-des">\' . $venue . \' </div>\';
        }
        $items_src .= \'
                  </div>
               </a>
            </div><!-- end .vdshr-fix wz-last -->\';
    endwhile;
    wp_reset_query();
    $items_src .= \'    
         </div><!-- end .home-width -->
      </div><!-- end .vdshr-col -->
   </div><!-- end .home-shr clearfix -->\';
    return $items_src;
}
?>
问题-如何通过子分类法中的仅使用快捷码的帖子显示:音乐视频还是仅来自游戏视频?

谢谢你们的时间和耐心,伙计们

1 个回复
SO网友:s_ha_dum

这是一个非常混乱的短代码,但如果你在短代码中传递一个术语段塞cat 附件此部分。。。

if (of_get_option(\'shortcat_video\', \'1\') == \'1\') {
    $query = array(
        \'posts_per_page\' => $items,
        \'orderby\' => $orderby,
        \'order\' => $order,
        \'post_type\' => \'video\',
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'videos\',
                \'field\' => \'slug\',
                \'terms\' => array(
                    $cat
                )
            )
        )
    );
}
。。。将显示这些视频,但of_get_option 条件可能会阻止该块运行。我不知道那是什么,也不知道它是如何设置的。因为我不知道这个条件是什么,所以我不能说如果你去掉它,结果会是什么。那个tax_query 组件是您所需要的。

如果传递该段代码不起作用,您可能需要创建自己的短代码,可以通过复制该代码并更改顶部来实现。如果您需要这样做并需要帮助,请告诉我。

结束

相关推荐

Wrap Shortcodes and wpautop

WP让我现在拔出头发(过去几天一直在努力解决)。尝试做一些简单的短代码,这些代码围绕着文章的各个要点。然而,我认为wpautop()正在造成巨大破坏。我尝试了网络上的各种建议,包括viperbonds(VIP.N:行情)和viperbonds(VIP.N:行情)等http://www.viper007bond.com/2009/11/22/wordpress-code-earlier-shortcodes/ ) 控制短代码何时运行,但无论是在wpautop之前还是之后运行,我仍然会遇到各种麻烦。它只格式化