【问题标题】:Woocommerce current endpoint page titles in my account template我的帐户模板中的 Woocommerce 当前端点页面标题
【发布时间】:2019-03-27 06:02:22
【问题描述】:

我正在使用 woo-commerce 用户仪表板模板。

我需要打印当前端点的标题而不是the_title();

以下图片截图

DOMIAN.com/my-account/orders/。页面标题应该是“我的订单”,但它是“我的帐户”。

对其他端点标题的要求也相同。

请帮帮我。

【问题讨论】:

    标签: wordpress woocommerce custom-wordpress-pages


    【解决方案1】:

    我的帐户菜单项的原始顺序可以在/wp-content/plugins/woocommerce/includes/wc-account-functions.php中看到

    /**
     * Get My Account menu items.
     *
     * @since 2.6.0
     * @return array
     */
    function wc_get_account_menu_items() {
     return apply_filters( 'woocommerce_account_menu_items', array(
     'dashboard' => __( 'Dashboard', 'woocommerce' ),
     'orders' => __( 'Orders', 'woocommerce' ),
     'downloads' => __( 'Downloads', 'woocommerce' ),
     'edit-address' => __( 'Addresses', 'woocommerce' ),
     'payment-methods' => __( 'Payment Methods', 'woocommerce' ),
     'edit-account' => __( 'Account Details', 'woocommerce' ),
     'customer-logout' => __( 'Logout', 'woocommerce' ),
     ) );
    }
    

    您可以使用 woocommerce_account_menu_items 过滤器更改这些端点的顺序,也可以使用相同的过滤器更改列表项标题。

    <?php
    function wpb_woo_my_account_order() {
        $myorder = array(
            'my-custom-endpoint' => __( 'My Stuff', 'woocommerce' ),
            'edit-account'       => __( 'Change My Details', 'woocommerce' ),
            'dashboard'          => __( 'Dashboard', 'woocommerce' ),
            'orders'             => __( 'Orders', 'woocommerce' ),
            'downloads'          => __( 'Download MP4s', 'woocommerce' ),
            'edit-address'       => __( 'Addresses', 'woocommerce' ),
            'payment-methods'    => __( 'Payment Methods', 'woocommerce' ),
            'customer-logout'    => __( 'Logout', 'woocommerce' ),
        );
        return $myorder;
    }
    add_filter ( 'woocommerce_account_menu_items', 'wpb_woo_my_account_order' );
    

    更改列表项标题的限制之一是它不会更改条目标题。

    更改 WooCommerce 自定义端点的 entry-title 的一种方法是使用 the_title 过滤器和 in_the_loop 条件。

    <?php
    /*
     * Change the entry title of the endpoints that appear in My Account Page - WooCommerce 2.6
     * Using the_title filter
     */
    function wpb_woo_endpoint_title( $title, $id ) {
        if ( is_wc_endpoint_url( 'downloads' ) && in_the_loop() ) { // add your endpoint urls
            $title = "Download MP3s"; // change your entry-title
        }
        elseif ( is_wc_endpoint_url( 'orders' ) && in_the_loop() ) {
            $title = "My Orders";
        }
        elseif ( is_wc_endpoint_url( 'edit-account' ) && in_the_loop() ) {
            $title = "Change My Details";
        }
        return $title;
    }
    add_filter( 'the_title', 'wpb_woo_endpoint_title', 10, 2 );
    

    【讨论】:

    • 感谢您的快速回复,我已经在某处看到了这个 the_title 过滤器,但当时没有注意到 in_the_loop 检查...但是它正在处理 if 条件的轻微变化...谢谢你这么多ArtiJi
    • 这是我的荣幸。欢迎
    • 这不起作用,除非您删除 in_the_loop 检查。
    • 我认为woocommerce_endpoint_{$endpoint}_title 是更改标题和页面标题的更安全方式。
    【解决方案2】:

    用端点标题替换页面标题。

    <?php
    add_filter( 'the_title', 'wc_page_endpoint_title' );
    the_title( '<h1 class="page-title mb-4">', '</h1>' );
    ?>
    

    wc_page_endpoint_title

    【讨论】:

      猜你喜欢
      • 2016-10-28
      • 2016-11-04
      • 2018-05-19
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      相关资源
      最近更新 更多