我有一个显示每个帖子的网站,每个帖子都有一个说明,以解释该帖子。

如何获得我的类别页面(总结所有帖子的页面),以仅显示帖子的小摘要,而没有其他内容。目前我正在使用

the_excerpt();


但这会将文字限制为55个字,但是其中一些字会小于该字,因此其他文字会显示在我不想要的类别中。

例如,这是一个示例帖子:
http://thestudentbubble.com/hidden-gems/hidden-gems-restaurants/ganges-indian/

正如您在下面看到的那样,说明是其他信息,我不希望其显示在类别页面上。

这是类别页面-http://thestudentbubble.com/hidden-gems/hidden-gems-restaurants/

但我不想出现的其他信息仍然出现。

我要显示的文字在:

<div class = "bioText">


如何仅使div中的文本显示在类别页面中?
感谢您的帮助!

这是类别循环:

<div class="comment">
                    <?php
                        $cats = get_the_category();
                        $category_id = $cats[0]->cat_ID;
                        $args = array( 'posts_per_page' => 1, 'category' => $category_id);
                        $lastposts = get_posts( $args );
                        foreach ( $lastposts as $post ) :

                        $this_post_ID = get_the_ID();
                        $this_post_preview = get_post_meta( $this_post_ID, 'post_preview', true );
                        echo $this_post_preview;

                        //the_excerpt();
                         //the_content();
                        wp_reset_postdata();
                        endforeach;

                     ?>



                </div>

最佳答案

好的,首先要做的是在每个帖子的管理面板中创建一个自定义文本区域。它将出现在编辑器下。让我们创建一个包含代码的.php文件,将其命名为post_preview_field.php,并将其放置在主题根文件夹中。之后,我们将需要在我们的functions.php文件中引用它。只需添加以下行即可完成:

require_once(get_template_directory().'/post_preview_field.php');


让我们打开post_preview_field.php文件并编写代码。

<?php
    add_action( 'add_meta_boxes', 'post_preview_metabox' );
    add_action( 'save_post', 'post_preview_save_postdata' );

function post_preview_metabox() {
$screens = array( 'post' );
    foreach ($screens as $screen) {
        add_meta_box(
        'post_preview_metabox_id',
        __( 'Post Preview', 'post_preview_textdomain'),
        'post_preview_inner_boxes',
        $screen
    );
}
}

function post_preview_inner_boxes( $post ) {
wp_nonce_field( plugin_basename( __FILE__ ), 'post_preview_noncename' );
$post_preview_value = get_post_meta( $post->ID, 'post_preview', true );
echo '<label for="post_preview_new_field">';
    _e("", 'post_preview_textdomain' );
?>
</label>
<textarea name="post_preview_new_field" id="post_preview_new_field" ><?php echo  $post_preview_value; ?></textarea>

<?php }

function post_preview_save_postdata( $post_id ) {
if ( 'post' == $_POST['post_type'] ) {
    if ( ! current_user_can( 'edit_page', $post_id ) )
    return;
} else {}
if ( ! isset( $_POST['post_preview_noncename'] ) || ! wp_verify_nonce( $_POST['post_preview_noncename'], plugin_basename( __FILE__ ) ) )
return;
$post_ID = $_POST['post_ID'];
$post_preview = ( $_POST['post_preview_new_field'] );
add_post_meta($post_ID, 'post_preview', $post_preview, true) or
update_post_meta($post_ID, 'post_preview', $post_preview);
}

?>


开始了。我们刚刚创建了一个textarea字段,该字段出现在每个帖子的面板中,可以包含一些文本,每次保存\更新帖子时都会保存,并存储在帖子的元数据中。

现在,我们要做的就是在前端访问此值并回显它。我们该怎么做?
在循环中,我们首先将帖子ID分配给一个变量:

$this_post_ID = get_the_ID();


然后将我们存储的数据分配给另一个:

$this_post_preview = get_post_meta( $this_post_ID, 'post_preview', true );


而已。现在我们可以回显预览:

echo $this_post_preview;

09-25 16:12
查看更多