如何将WordPress档案分成三列显示

时间:2017-05-23 作者:VKS

<?php  $cats = get_categories(\'child_of=\'.get_query_var(\'cat\')); 

foreach ($cats as $cat) :

$args = array(
\'posts_per_page\' => 3, // max number of post per category
\'category__in\' => array($cat->term_id)
);
$my_query = new WP_Query($args); 

    if ($my_query->have_posts()) : 
    echo \'<h3>\'.$cat->name.\'</h3>\';

    while ($my_query->have_posts()) : $my_query->the_post(); ?>     
    <?php /*general loop output; for instance: */ ?>
    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>    <br />  

    <?php endwhile; ?>

    <?php else : 
    echo \'No Posts for \'.$cat->name;                
    endif; 

endforeach; ?>
这是我想要的enter image description here

1 个回复
SO网友:Eric B.

这里有一个很棒的帖子:https://digwp.com/2010/03/wordpress-post-content-multiple-columns/ 关于如何做到这一点。

我最常用的方法是数字3。这有点复杂,但以下是步骤。要获得更深入的报道(这可能是你想要的),请查看这篇文章。

将my\\u multi\\u col\\u v2函数添加到函数中。php文件

function my_multi_col_v2($content){
    // run through a couple of essential tasks to prepare the content
    $content = apply_filters(\'the_content\', $content);
    $content = str_replace(\']]>\', \']]&gt;\', $content);

    // the first "more" is converted to a span with ID
    $columns = preg_split(\'/(<span id="more-\\d+"><\\/span>)|(<!--more-->)<\\/p>/\', $content);
    $col_count = count($columns);

    if($col_count > 1) {
        for($i=0; $i<$col_count; $i++) {
            // check to see if there is a final </p>, if not add it
            if(!preg_match(\'/<\\/p>\\s?$/\', $columns[$i]) )  {
                $columns[$i] .= \'</p>\';
            }
            // check to see if there is an appending </p>, if there is, remove
            $columns[$i] = preg_replace(\'/^\\s?<\\/p>/\', \'\', $columns[$i]);
            // now add the div wrapper
            $columns[$i] = \'<div class="dynamic-col-\'.($i+1).\'">\'.$columns[$i].\'</div>\';
        }
        $content = join($columns, "\\n").\'<div class="clear"></div>\';
    }
    else {
        // this page does not have dynamic columns
        $content = wpautop($content);
    }
    // remove any left over empty <p> tags
    $content = str_replace(\'<p></p>\', \'\', $content);
    return $content;
    }
更换the_content() 在页面模板中标记以下内容:

$content = get_the_content(\'\',FALSE,\'\'); // arguments remove \'more\' text
echo my_multi_col_v2($content);
添加一些CSS以将标记格式化为列

/* dynamic columns */
div.dynamic-col-1 { float: left; width: 38%; padding-right: 2%;}
div.dynamic-col-2 { float: left; width: 38%;padding-right: 2%;}
div.dynamic-col-3 { float: left; width: 20%;}
div.clear { clear: both; }
记住将两者相加<!--more--> 在帖子/页面内容中添加标签以创建三列。

结束

相关推荐

使用QUERY_POSTS()从循环中排除第一个POST(粘性或非粘性)

我正在使用query_posts( \'offset=1\' ); 将第一篇文章从循环中排除。但是,如果第一个帖子是粘性帖子,则会显示该帖子,而第二个(非粘性)帖子不会显示。是否有任何方法可以隐藏第一篇帖子,无论它是否有粘性?我不能使用ignore_sticky_posts 因为我只想隐藏第一个。谢谢你的帮助!