如何在类别页面中的帖子中显示div - wordpress

时间:2014-06-26 10:33:32

标签: html css wordpress wordpress-theming categories

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

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

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>

2 个答案:

答案 0 :(得分:0)

好的,首先要做的是在每个帖子的管理面板中创建一个自定义文本区域。它将出现在编辑器下面。让我们创建包含我们代码的.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;

答案 1 :(得分:0)

我设法通过添加

解决了这个问题
<!--more-->

在每个描述之后。