首先:不要直接编辑第三方主题!
使用所谓的child theme 因此,下次更新主主题时,所做的更改不会被新文件覆盖。
在子主题中,您将有一个函数。php文件,通过挂钩操作和过滤器覆盖WordPress的主要功能。
要自定义博客标题,您可以挂接过滤器“wp_title
“”like so:
add_filter(\'wp_title\', \'my_custom_title\');
function my_custom_title( $title )
{
// Return my custom title
return sprintf("%s %s", $title, get_bloginfo(\'name\'));
}
要为每个页面添加自定义标题,最好使用带有自定义字段的元框。没有简单的方法可以做到这一点,但这里有一个简洁的片段,用于添加验证较差的元盒(请小心使用):
<?php
add_action( \'add_meta_boxes\', \'so_add_post_title_metabox\' );
add_action( \'save_post_page\', \'so_save_post_title_metabox_data\' ); // in this case, saving post of post_type "page"
function so_add_post_title_metabox() {
add_meta_box( \'post_title_meta\', __( \'Title\', \'domain-name\' ), \'so_post_title_metabox_callback\', \'page\' ); // same as above
}
function so_post_title_metabox_callback($post) {
$post_id = $post->ID;
$post_title_meta = get_post_meta( $post_id, \'post_title_meta\', true);
?>
<label><?php _e( \'Custom post title\', \'domain-name\' )?></label>
<input type="text" name="post_title_meta" value="<?php echo $post_title_meta ?>">
<?php
}
function so_save_post_title_metabox_data($post_id) {
if ( !isset($_POST[\'post_title_meta\'] ) ) {
return $post_id;
}
$post_title_meta = sanitize_text_field( $_POST[\'post_title_meta\'] );
update_post_meta( $post_id, \'post_title_meta\', $post_title_meta );
}
要检索自定义字段并呈现自定义标题,请执行以下操作:
<?php
add_filter( \'wp_title\', \'so_custom_title\' );
function so_custom_title( $title ) {
global $post;
$post_id = $post->ID;
if( $custom_title = get_post_meta( $post_id, \'post_title_meta\', true ) ) {
return esc_html( $custom_title );
}
return $title;
}
另一种方式
(not recommended in this case) 要以编程方式实现这一点,需要在子主题中使用模板部件。
还有很多第三方插件可以简化这项工作,比如Yoast的WP SEO(全功能SEO插件)和其他提供这项功能的插件(由于我没有使用任何插件,所以无法提及)。