如何覆盖WooCommerce端点的标题标记?

时间:2015-07-06 作者:Steve-ACET

我正在尝试为具有端点的Woocommerce页面设置标题标记。我正在使用Yoast SEO,到目前为止,我已经创建了以下内容:

function woocommerce_endpoint_titles( $title ) {
    $sep = \' | \';
    $sitetitle = get_bloginfo();

    if ( is_wc_endpoint_url( \'view-order\' ) ) {
        $title = \'View Order\'. $sep . $sitetitle;   
        return $title;
    }
    else if ( is_wc_endpoint_url( \'edit-account\' ) ) {
        $title = \'Edit Account\'. $sep . $sitetitle; 
        return $title;
    }
    else if ( is_wc_endpoint_url( \'edit-address\' ) ) {
        $title = \'Edit Address\'. $sep . $sitetitle; 
        return $title;
    }
    else if ( is_wc_endpoint_url( \'lost-password\' ) ) {
        $title = \'Lost Password\'. $sep . $sitetitle;    
        return $title;
    }
    else if ( is_wc_endpoint_url( \'customer-logout\' ) ) {
        $title = \'Logout\'. $sep . $sitetitle;   
        return $title;
    }
    else if ( is_wc_endpoint_url( \'order-pay\' ) ) {
        $title = \'Order Payment\'. $sep . $sitetitle;    
        return $title;
    }
    else if ( is_wc_endpoint_url( \'order-received\' ) ) {
        $title = \'Order Received\'. $sep . $sitetitle;   
        return $title;
    }
    else if ( is_wc_endpoint_url( \'add-payment-method\' ) ) {
        $title = \'Add Payment Method\'. $sep . $sitetitle;   
        return $title;
    }
}
add_filter( \'wpseo_title\',\'woocommerce_endpoint_titles\');
这是可行的,但只适用于端点页面,所有其他页面现在都没有标题。当不在端点页面上时,如何使上述代码返回默认标题?

干杯

史蒂夫

2 个回复
最合适的回答,由SO网友:Steve-ACET 整理而成

事实证明,我只需要返回$title变量,它已经包含了我需要的内容:

function woocommerce_endpoint_titles( $title ) {
    $sep = \' | \';
    $sitetitle = get_bloginfo();

    if ( is_wc_endpoint_url( \'view-order\' ) ) {
        $title = \'View Order: \' . $sep . $sitetitle;    
    }
    if ( is_wc_endpoint_url( \'edit-account\' ) ) {
        $title = \'Edit Account\'. $sep . $sitetitle; 
    }
    if ( is_wc_endpoint_url( \'edit-address\' ) ) {
        $title = \'Edit Address\'. $sep . $sitetitle; 
    }
    if ( is_wc_endpoint_url( \'lost-password\' ) ) {
        $title = \'Lost Password\'. $sep . $sitetitle;    
    }
    if ( is_wc_endpoint_url( \'customer-logout\' ) ) {
        $title = \'Logout\'. $sep . $sitetitle;   
    }
    if ( is_wc_endpoint_url( \'order-pay\' ) ) {
        $title = \'Order Payment\'. $sep . $sitetitle;    
    }
    if ( is_wc_endpoint_url( \'order-received\' ) ) {
        $title = \'Order Received\'. $sep . $sitetitle;   
    }
    if ( is_wc_endpoint_url( \'add-payment-method\' ) ) {
        $title = \'Add Payment Method\'. $sep . $sitetitle;   
    }
    return $title;
}
add_filter( \'wpseo_title\',\'woocommerce_endpoint_titles\');

SO网友:rosie

如果在init上添加了自定义WC端点,则可以使用类似的方法来检查端点(如果使用Yoast,则相应地进行调整):

function add_custom_endpoints_to_title( $post_title ) {

    if ( ! is_account_page() ) {
        return $post_title;
    }

    global $wp;

    if ( isset( $wp->query_vars[\'custom_endpoint_1\'] ) ) {
        $post_title = \'Custom Endpoint 1\';
    } elseif ( isset( $wp->query_vars[\'custom_endpoint_2\'] ) ) {
        $post_title = \'Custom Endpoint 2\';
    }

    return $post_title;
}

add_filter( \'single_post_title\', \'add_custom_endpoints_to_title\', 99 );

结束

相关推荐

Replace text in the Title

在显示的字符串中<?php the_title(); ?> 我必须全部更换& 具有的字符and.以下是我尝试过但没有成功的代码:<?php $wptitle = the_title(); $wptitle = str_replace(\'&\', \'and\', $wptitle);?><?php echo $wptitle; ?> 要替换的完整代码:<h2><a href=\"<?php if(get_post_me