代码之家  ›  专栏  ›  技术社区  ›  Cray

添加页面到youast SEO breadcrumbs

  •  0
  • Cray  · 技术社区  · 6 年前

    问题是,我使用的是WooCommerce和breadcrumb在我的账户仪表板上无法正常工作。它总是显示以下轨迹:

    即使我在“编辑帐户”这样的子页面上。 这些子页面不是真正的页面。它们是同一页上的端点。

    应该是这样的:

    主页>我的帐户>订单>订单ID

    我试图添加一个页面,但想不出来。

    /**
     * Conditionally Override Yoast SEO Breadcrumb Trail
     * http://plugins.svn.wordpress.org/wordpress-seo/trunk/frontend/class-breadcrumbs.php
     * -----------------------------------------------------------------------------------
     */
    
    add_filter( 'wpseo_breadcrumb_links', 'wpse_100012_override_yoast_breadcrumb_trail' );
    
    function wpse_100012_override_yoast_breadcrumb_trail( $links ) {
        global $post;
    
        if ( is_home() || is_singular( 'post' ) || is_archive() ) {
            $breadcrumb[] = array(
                'url' => get_permalink( get_option( 'page_for_posts' ) ),
                'text' => 'Blog',
            );
    
            array_splice( $links, 1, -2, $breadcrumb );
        }
    
        return $links;
    }
    

    代码来自: https://wordpress.stackexchange.com/a/121618/96806

    这个代码很好用。 但是我怎样才能把它改成添加页面而不是删除页面呢?

    array_splice ;-)

    0 回复  |  直到 6 年前
        1
  •  1
  •   Cray    6 年前

    好的,我有个解决办法。

    非常感谢@WebElaine的回答: https://wordpress.stackexchange.com/a/332300/96806

    以下是我在“我的帐户”区域更改Yoast面包屑导航的完整代码:

    add_filter('wpseo_breadcrumb_links', 'woocommerce_account_breadcrumb_trail');
    function woocommerce_account_breadcrumb_trail($links) {
        if ( is_wc_endpoint_url() or is_account_page() ) {
    
            $endpoint       = WC()->query->get_current_endpoint();
            $endpoint_title = WC()->query->get_endpoint_title( $endpoint );
            $endpoint_url   = wc_get_endpoint_url($endpoint);
    
            if ( is_account_page() && !is_wc_endpoint_url() ) :
                //$links[2] = array('text' => $endpoint_title, 'url' => $endpoint_url, 'allow_html' => 1);
    
            elseif ( is_wc_endpoint_url( 'edit-account' ) ) :
                $links[2] = array('text' => $endpoint_title, 'url' => $endpoint_url, 'allow_html' => 1);
    
            elseif ( is_wc_endpoint_url( 'orders' ) ) :
                $links[2] = array('text' => $endpoint_title, 'url' => $endpoint_url, 'allow_html' => 1);
    
                elseif ( is_wc_endpoint_url( 'view-order' ) ) :
                    $endpoint_orders        = 'orders';
                    $endpoint_orders_title  = WC()->query->get_endpoint_title( $endpoint_orders );
                    $endpoint_orders_url    = wc_get_endpoint_url($endpoint_orders);
    
                    $links[2] = array('text' => $endpoint_orders_title, 'url' => $endpoint_orders_url, 'allow_html' => 1);
                    $links[3] = array('text' => $endpoint_title, 'url' => $endpoint_url, 'allow_html' => 1);
    
            elseif ( is_wc_endpoint_url( 'edit-address' ) ) :
                $links[2] = array('text' => $endpoint_title, 'url' => $endpoint_url, 'allow_html' => 1);
    
            elseif ( is_wc_endpoint_url( 'payment-methods' ) ) :
                $links[2] = array('text' => $endpoint_title, 'url' => $endpoint_url, 'allow_html' => 1);
    
                elseif ( is_wc_endpoint_url( 'add-payment-method' ) ) :
                    $endpoint_payment_methods       = 'payment-methods';
                    $endpoint_payment_methods_title = WC()->query->get_endpoint_title( $endpoint_payment_methods );
                    $endpoint_payment_methods_url   = wc_get_endpoint_url($endpoint_payment_methods);
    
                    $links[2] = array('text' => $endpoint_payment_methods_title, 'url' => $endpoint_payment_methods_url, 'allow_html' => 1);
                    $links[3] = array('text' => $endpoint_title, 'url' => $endpoint_url, 'allow_html' => 1);
    
            endif;
    
        }
    
        return $links;
    
    }
    

    我对每一个反馈都很满意。