如何在我的定制主题中只显示我的WordPress帖子的日期、标题和一些“摘要”?

时间:2014-07-27 作者:AndreaNobili

我是WordPress主题开发的新手,我对如何在页面中显示帖子有以下疑问。

我有一个属于旧的自定义遗留博客的页面,我正在使用WordPress重新构建该页面:http://www.asper-eritrea.com/comunicati.asp

正如您在本页中看到的,一些帖子采用以下结构:date 然后是post title 后跟ashort summary

我想在WordPress中做的就是这样。

因此,我创建了显示帖子列表的页面:http://lnx.asper-eritrea.com/category/legacyposts/

正如您在本页中看到的,显示的是帖子(格式很糟糕,因为我从旧网站导入了帖子,但我会在第二次处理它)。

主要问题是,如果帖子很长,就会显示出所有内容。

这是本页的代码(category.php) 是:

<?php get_header(); ?>

<!-- Contenuti (griglia) -->
<div class="container">
    <!-- Lead presentazione -->
    <section id="presentazione">
        <div class="row">
            <div class="col-sm-12">
                <!--<h1 class="text-center"><small>Associazione per la Tutela dei Diritti Umani del Popolo Eritreo</small></h1>-->
                <h1 class="text-center title">Associazione per la Tutela dei Diritti Umani del Popolo Eritreo</h1>
                <h1 class="text-center leadTitle">Association in Defense of the Human Rights of the Eritrean People</h1>
                <!--
                <p class="lead text-center">
                    Association in Defense of the Human Rights of the Eritrean People
                </p>
                -->
            </div><!-- /.col-sm-12 -->
        </div><!-- /.row -->
    </section><!-- /section presentazione -->
    <!-- Progetti in evidenza -->

    <header class="header-sezione">
        <h2>Ultimi Articoli</h2>
    </header>

    <?
    // get the term using the slug and the tag taxonomy
    $term = get_term_by( \'slug\', \'featured\', \'post_tag\' );
    // pass the term_id to tag__not_in
    query_posts( array( \'tag__not_in\' => array ( $term->term_id )));
    ?>

    <?php
        if (have_posts()) :
            // Start the Loop.
            while (have_posts()) : the_post();

                /*
                 * Include the post format-specific template for the content. If you want to
                 * use this in a child theme, then include a file called called content-___.php
                 * (where ___ is the post format) and that will be used instead.
                 */
                get_template_part(\'content\', get_post_format());

            endwhile;
        else :
            // If no content, include the "No posts found" template.
            get_template_part(\'content\', \'none\');

        endif;
        ?>

    </section>

</div>

<?php get_footer(); ?>
因此,我想做的是,对于每个帖子,循环只显示我帖子的日期、标题和开头(例如特定数量的字符)。

要获得此结果,我可以做些什么?

Tnx公司

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

这个get_template_part(\'content\', get_post_format()); 行包括主题中其他文件的内容,基于帖子类型,文件名如下content-page.php (或content.php 如果找不到格式)。

如果你打印出什么get_post_format() 返回时,您将能够知道要查看哪个内容文件。

打开此文件后,您将看到一个具有“entry content”类的div。我怀疑集装箱内会有the_content();, 把整个帖子都吐出来了。将其更改为the_excerpt();, 它返回文章的实际摘录(如果已经撰写)或内容的精简版本。默认情况下,WP会缩减到前55个单词-如果您想要更大或更短的内容部分,则需要一些额外的编码。

如果您需要更改内容。php,请小心,因为如果找不到任何post格式,这将作为备份。根据站点的大小和内容包含的使用次数,最好添加一个条件,而不是替换代码:如果文章是旧文章,则输出摘录,否则保留原始内容代码。

您可以在WP Codex中查找有关这些的更多信息:

SO网友:Domain

出现此问题的原因是get\\u template\\u part函数。它包括打印完整文本的模板文件。应该做的是,不要改变原来的主题本身,首先你应该创建一个child theme. 这背后的原因是,当主题作者发布新版本时,您可以安全地升级原始主题。如果您对原始主题进行了更改,那么在升级过程中,这些更改将被删除。如果要创建自己的主题,则不需要子主题。

如果要创建子主题,请在该子主题中复制类别。php。

创建函数。在子主题的目录中添加php,并在其中添加以下内容(如果要更改原始主题,请在其中添加以下内容。)此过程是可选的。它为您提供了更多的权限,可以控制要显示的字数和“阅读更多”要显示的文本。

add_filter( \'excerpt_more\', \'wdm_excerpt_more_link\' );

function wdm_excerpt_more_link( $more ) {
    global $post, $wdm_flag_for_category_page;
    if(isset($wdm_flag_for_category_page) && $wdm_flag_for_category_page == true){ //if our flag is set, then execute the below statement
        return \'... <a href="\' . get_permalink( $post->ID ) . \'">Read more</a>\';
    }
    return $more;
}

add_filter( \'excerpt_length\', \'wdm_change_excerpt_length\', 999 );

function wdm_change_excerpt_length( $length ) {
    global $wdm_flag_for_category_page;

    if(isset($wdm_flag_for_category_page) && $wdm_flag_for_category_page == true){ //change the length only if flag is set
    return 20;
    }

    return $length;
}
我们基本上要做的是,我们将使用WordPress的摘录概念。它基本上显示摘要或简短描述。要了解更多摘录,请阅读here

使用以上功能,我们将显示20个单词的摘要,然后将显示“阅读更多”链接。你可以把20个单词的限制改成你想要的任何单词。注意我们使用的是一个变量\'wdm_flag_for_category_page\'. 我们将在类别中定义此变量。php。我们使用这个变量,因此单词限制只适用于类别页面。

添加以上代码后,请保存函数。php。

我们必须在子主题的目录中再创建一个文件。创建一个文件并命名为\'content-category-display.php\'.

我观察了你当前主题的HTML结构,根据这一点,下面的内容可以放在内容类别显示中。php

<?php
/**
 * The template for displaying posts on category page
 */
?>
    <article id = "post-<?php the_ID(); ?>" <?php post_class();?>>
        <header class="entry-header">
        <?php if ( is_single() ) : ?>
            <h2 class="entry-title">
                <?php the_title();  //Print Title ?>
            </h2><!-- .entry-title -->
        <?php else :?>
             <h2 class="entry-title">
                 <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
             </h2><!-- .entry-title -->
        <?php endif; // is_single()  ?>
            <div class="entry-meta">
                <span>
                     <?php echo get_the_date();  //Print Date ?>
                </span>
            </div><!-- .entry-meta -->
        </header><!-- .entry-header -->
        <div class="entry-content">
            <?php the_excerpt(); //Prints Excerpt. wdm_excerpt_more_link and wdm_change_excerpt_length functions defined in functions.php will be executed during execution of the_excerpt function   ?>
        </div><!-- .entry-content --> 
    </article>
保存内容类别显示。php文件。现在,我们将在类别中调用此新模板。因此,php是您的最终类别。php(复制到子主题的目录中)如下所示

<?php get_header();
$wdm_flag_for_category_page = true; //wdm_flag_for_category_page variable set here for executing code of more control over excerpt words limit
?>

<!-- Contenuti (griglia) -->
<div class="container">
    <!-- Lead presentazione -->
    <section id="presentazione">
        <div class="row">
            <div class="col-sm-12">
                <!--<h1 class="text-center"><small>Associazione per la Tutela dei Diritti Umani del Popolo Eritreo</small></h1>-->
                <h1 class="text-center title">Associazione per la Tutela dei Diritti Umani del Popolo Eritreo</h1>
                <h1 class="text-center leadTitle">Association in Defense of the Human Rights of the Eritrean People</h1>
                <!--
                <p class="lead text-center">
                    Association in Defense of the Human Rights of the Eritrean People
                </p>
                -->
            </div><!-- /.col-sm-12 -->
        </div><!-- /.row -->
    </section><!-- /section presentazione -->
    <!-- Progetti in evidenza -->

    <header class="header-sezione">
        <h2>Ultimi Articoli</h2>
    </header>

    <?
    // get the term using the slug and the tag taxonomy
    $term = get_term_by( \'slug\', \'featured\', \'post_tag\' );
    // pass the term_id to tag__not_in
    query_posts( array( \'tag__not_in\' => array ( $term->term_id )));
    ?>

    <?php
        if (have_posts()) :
            // Start the Loop.
            while (have_posts()) : the_post();

                /*
                 * Include the post format-specific template for the content. If you want to
                 * use this in a child theme, then include a file called called content-___.php
                 * (where ___ is the post format) and that will be used instead.
                 */
                get_template_part(\'content\', \'category-display\'); //Here it calls content-category-display.php

            endwhile;
        else :
            // If no content, include the "No posts found" template.
            get_template_part(\'content\', \'none\');

        endif;
        ?>

    </section>

</div>

<?php get_footer(); ?>
希望这有帮助:)

通过这种方法,已注意到它不会影响网站的任何其他部分,除了类别页面。

结束

相关推荐

Subscribers to posts

把每一篇文章都当作对话的主题,并评论一段对话。现在一切都很好。我创建了一个名为“对话”的帖子类型。现在,我想列出用户参与的所有对话。如何扩展wordpress的此功能?我的想法是创建一个名为wp_posts_users 具有user_id 和conv_id. 这方面有什么最佳做法吗?我的最终目标是在用户页面上列出他参与的所有对话。