首页上帖子标题下的文本,但不想在完整帖子中显示

时间:2014-02-22 作者:FullContactCoder

在博客的首页上,我希望在标题下有一段文字(如摘录),但我不希望出现在全文中。

你知道我该怎么做吗?

编辑:我的问题不够精确。标题下的文本对于每个帖子都是不同的,并且必须能够由最终用户在后端进行设置,最好是在键入帖子时进行设置。

4 个回复
最合适的回答,由SO网友:Brad Dalton 整理而成

测试了这一点,它在《创世纪》上非常有效。

您还可以在自定义字段中使用HTML标记。

add_action( \'genesis_entry_header\', \'content_after_archive_title\', 15 );

function content_after_archive_title() {

if ( is_home() && genesis_get_custom_field(\'after-title\') ) :

echo \'<div class="after-title">\'. genesis_get_custom_field(\'after-title\') .\'</div>\';

endif;

}
使用可以在编辑器下重新定位的本机自定义字段元框。

enter image description here

您还可以使用edit_form_after_title 如果您想在编辑器之前挂起该框,或者使用类似ACF的插件。

如果你的主题没有包含标题或帖子信息元的挂钩,你可以使用内容或帖子元过滤器或动作挂钩。

Change Position: 如果您希望它位于帖子信息之前,只需将第3个参数更改为11,结果如下:

enter image description here

SO网友:Chip Bennett

实际上,您可以使用用户生成的摘录来实现此目的。只需确保为每篇文章添加用户生成的摘录,然后执行如下操作:

<h1><?php the_title(); ?></h1>
<div>
<?php 
if ( is_front_page() ) { 
    the_excerpt(); 
} else {
    the_content();
}
?>
</div>

SO网友:Mayeenul Islam

查找负责文章标题和摘录的代码块。然后只需使用以下内容:

<h2 class="entry-title"><?php the_title(); ?></h2>
<?php
//here is your code block
if( is_front_page() || is_home() ) {
   echo \'<div>My text block here</div>\';
}
?>

Reference:

SO网友:s_ha_dum

有一个钩子叫edit_form_after_title 这似乎是为这个案子设计的。加上一个自定义的元字段应该可以做到这一点。

function after_title_cb($post) {
  $af = get_post_meta($post->ID,\'_after_title\',true);
  echo \'<input id="aftertitle" name="_after_title" value="\'.$af.\'">\';
}
add_action(\'edit_form_after_title\',\'after_title_cb\');

function save_after_title( $post_id ) {

  $mydata = (!empty($_POST[\'_after_title\'])) 
    ? wp_kses($_POST[\'_after_title\'])
    : \'\';

  update_post_meta( $post_id, \'_after_title\', $mydata );
}
add_action( \'save_post\', \'save_after_title\' );
如果您愿意,您甚至可以将整个内容包装在标准的metabox中。

function after_title_cb($post) {
  $af = get_post_meta($post->ID,\'_after_title\',true);
  echo \'<input id="aftertitle" name="_after_title" value="\'.$af.\'">\';
}

function add_before_editor($post) {
  global $post;
  add_meta_box(
    \'generic_box\', // id, used as the html id att
    __( \'Text Only Content\' ), // meta box title
    \'after_title_cb\', // callback function, spits out the content
    \'post\', // post type or page. This adds to posts only
    \'pre_editor\', // context, where on the screen
    \'high\' // priority, where should this go in the context
  );
  do_meta_boxes(\'post\', \'pre_editor\', $post);
}
add_action(\'edit_form_after_title\',\'add_before_editor\');

function save_after_title( $post_id ) {

  $mydata = (!empty($_POST[\'_after_title\'])) 
    ? wp_kses($_POST[\'_after_title\'])
    : \'\';

  update_post_meta( $post_id, \'_after_title\', $mydata );
}
add_action( \'save_post\', \'save_after_title\' );
在前端,您可以抓取并显示如下值:

// careful with $post
// This must be in a Loop to be reliable
$af = get_post_meta($post->ID,\'_after_title\',true); 
if ( !empty($af) ) { 
  echo $af;
} 

结束

相关推荐

如何将EDIT_FORM_AFTER_TITLE挂钩限制为仅限于页面和后期编辑?

嘿,我想用这个大钩子edit_form_after_title 2012年12月1日宣布:http://make.wordpress.org/core/2012/12/01/more-hooks-on-the-edit-screen/it curreclty hook for : post-new, post, page-new, page.如何使其仅在编辑页面/帖子中工作(only post, page)谢谢大家