我需要编辑我的主题才能更改博客页面的标题吗?

时间:2018-06-11 作者:B. Patali

我最近花了一些时间建立了一个博客,用作我的个人投资组合。到目前为止,我所有的问题都是通过视频或文章来回答的,因为我还是一个初学者。但是,我想我发现了一个我自己不容易研究的问题。

首先,我使用的是OceanWPv1。5.16作为我的主题。我的Wordpress是4.9.6版,我的主页设置为显示最近的帖子。默认情况下,页面标题是我的网站的标语。然而,我想有一个自定义标题。我还没有找到改变这一点的方法,所以我想我可能必须直接编辑主题。这将是我第一次这样做,所以我想特别清楚我的方法。

这是当前的页面:sflsurge。com公司

这是我想在主页上显示的标题:sflsurse。com/文章

如果您有任何指导意见(即使它建议我换一个论坛,因为这里没有话题),我将不胜感激!我想这是我准备好向朋友展示之前的最后一步!

编辑:我正在尝试编辑页面标题。当你进入我的主页时,标题是“电子竞技分析与管理”。但是,我想将其更改为/文章标题“SFL Surge电子竞技”\\n电子竞技分析博客&;播客网络\'。我的问题与自定义帖子类型无关。

1 个回复
最合适的回答,由SO网友:Casper 整理而成

首先:不要直接编辑第三方主题!

使用所谓的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插件)和其他提供这项功能的插件(由于我没有使用任何插件,所以无法提及)。

结束