我想在我的博客标题下方添加一些文字,我已经研究了大部分时间,但无法弄清楚如何去做,我不是 PHP 专家,但我对所有 php 文件需要的位置有基本的了解成为,我已经有一个子主题,我在我的子主题文件夹中使用 functions.php 文件构建了它。我的孩子主题是建立在 WordPress 21-11 之上的!
这是一个屏幕截图:
我正在尝试执行此操作的站点在这里
有一种方法可以在不安装插件的情况下添加这个简单的功能。
除非我读错了,否则您要做的就是添加一个新的元框,您可以在其中插入子标题并将其显示在该帖子上。
在functions.php中,添加它以创建一个元框来容纳您的子标题字段
function your_sub_title() {
add_meta_box('your_sub_title_metabox', 'Edit Sub Title', 'your_sub_title_metabox', 'post', 'normal', 'default'); ## Adds a meta box to post type
}
现在还在functions.php中为您的新字段添加代码
function your_sub_title_metabox() {
global $post; ## global post object
wp_nonce_field( plugin_basename( __FILE__ ), 'your_sub_title_nonce' ); ## Create nonce
$subtitle = get_post_meta($post->ID, 'sub_title', true); ## Get the subtitle
?>
<p>
<label for="sub_title">Sub Title</label>
<input type="text" name="sub_title" id="sub_title" class="widefat" value="<?php if(isset($subtitle)) { echo $subtitle; } ?>" />
</p>
<?php
}
接下来你要做的是创建你的保存功能。也在functions.php中
function sub_title_save_meta($post_id, $post) {
global $post;
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return false; ## Block if doing autosave
if ( !current_user_can( 'edit_post', $post->ID )) {
return $post->ID; ## Block if user doesn't have priv
}
if ( !wp_verify_nonce( $_POST['your_sub_title_nonce'], plugin_basename(__FILE__) )) {
} else {
if($_POST['sub_title']) {
update_post_meta($post->ID, 'sub_title', $_POST['sub_title']);
} else {
update_post_meta($post->ID, 'sub_title', '');
}
}
return false;
}
add_action('save_post', 'sub_title_save_meta', 1, 2);
然后,就在您的single.php模板中的 the_title() 下方
...
the_title();
$subtitle = get_post_meta(get_the_ID(), 'sub_title', true);
if(isset($subtitle)) {
echo $subtitle;
}
我建议研究一个允许您添加副标题或类似内容的插件,这意味着您将需要创建一个自定义字段,以便您可以在帖子的标题下添加文本到帖子的基础上。我强烈推荐Meta-Box。
要安装 Meta-Box,您只需像安装仪表板中的任何其他插件一样安装 Meta-Box 插件。完成后,在主题目录中创建一个名为“custom-meta.php”的新文件并复制此代码。
<?php
$prefix = '';
global $meta_boxes;
$meta_boxes = array();
// Custom Post Info Meta Box
$meta_boxes[] = array(
'id' => 'custom_post_info',
'title' => __( 'Custom Post Info', 'rwmb' ),
'pages' => array( 'post', 'page' ),
'context' => 'normal',
'priority' => 'high',
'autosave' => true,
'fields' => array(
array(
'name' => __( 'Subtitle', 'rwmb' ),
'id' => "{$prefix}subtitle",
'desc' => __( 'Enter Subtitle Here', 'rwmb' ),
'type' => 'text',
'std' => __( '', 'rwmb' ),
'clone' => false,
),
),
);
/********************* META BOX REGISTERING ***********************/
/**
* Register meta boxes
*
* @return void
*/
function register_meta_boxes()
{
if ( !class_exists( 'RW_Meta_Box' ) )
return;
global $meta_boxes;
foreach ( $meta_boxes as $meta_box )
{
new RW_Meta_Box( $meta_box );
}
}
add_action( 'admin_init', 'register_meta_boxes' );
然后通过在有意义的地方添加这一行来更新您的函数文件以包含“custom-meta.php”文件。
include 'custom-meta.php';
然后回到你的帖子,看看你是否有一个新的盒子可以插入字幕。如果你这样做了,太好了!
然后在每个帖子上都有一个自定义字段之后,您需要做的就是将该数据拉入主题模板。您将需要进入您的 single.php 文件,并细化这行代码。
<?php the_title(); ?>
并在其下方添加此内容。我怀疑这会是一个问题,但要使辅助函数工作,它需要在循环内。
<?php echo rwmb_meta('subtitle'); ?>