在woocommerce中自定义端点网址

时间:2016-01-21 08:41:54

标签: php wordpress woocommerce endpoints

我正在尝试在woocommerce中创建一个标签版“我的帐户”。 我使用bootstrap css在php中构建了我的页面并包含了wordpress页眉和页脚,因此页面正确加载。 标签显示正如我所知,我在woocommerce中遇到端点网址问题:

- 'edit-address'

- 'view-order'

这些端点是动态生成的并附加到网址:www.site-name.com/my-account/edit-address 这是函数调用(在文件.plugins / woocommerce / myaccount / form-edit-address.php中):

<a href="<?php echo wc_get_endpoint_url( 'edit-address', $name  ); ?>

我在我的标签页中包含了“我的地址”,这表示没问题。但是,编辑运送和帐单地址的链接是通过上述对端点的调用生成的。单击链接时,页面无法加载并返回404错误。

我的自定义php页面基本上是www.site-name.com/account/edit-address

问题是:

  • “edit-address”页面内容未加载,我收到404错误

我猜这个问题是因为我的网页是外部php页面而不是用wp数据库存储的?

有没有办法可以自定义端点网址,以便正确附加并加载页面?

链接到我网站上的页面:www.thecookerytutor dot co dot uk/account

Origional woocommerce my-account page:www.thecookerytutor dot co dot uk/my-account (您需要创建一个登录才能查看这两个页面)

这让我难过了好几天! 提前谢谢。

我的自定义php页面上的地址选项卡代码已承诺...

echo "<div id = 'edit-addresses' class='tab-pane fade'>";
                echo "<div id = 'content' class = 'page col-full'>";
                echo "<section id = 'main' class = 'col-left'>";
                echo "<BR>";
                        include "my-address.php";
                echo "</section>";
            echo "</div>";
     echo "</div>";`

正如你所看到的,我包括加载地址的wc页面(我已复制到本地文件夹) 这是edit-address.php的内容(我已复制到我的本地文件夹并添加了wp标头)。页面加载标题,但获取地址功能在第50行失败。

<?php 

define('WP_USE_THEMES', false); 

require('../wp-blog-header.php');

add_filter( 'wp_title', 'wp_title_so_18381106', 10, 3 );
function wp_title_so_18381106( $title, $sep, $seplocation ) 
{
  return 'Your Account | ';
}

get_header();
?>
<?php
/**
 * Edit address form
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.1.0
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

global $current_user;

$page_title = ( $load_address === 'billing' ) ? __( 'Billing Address', 'woocommerce' ) : __( 'Shipping Address', 'woocommerce' );

get_currentuserinfo();

?>

<?php wc_print_notices(); ?>

<?php //if ( ! $load_address ) : ?>

    <?php //wc_get_template( 'myaccount/my-address.php' ); ?>

<?php //else : ?>
    <form method="post">

        <h3><?php echo apply_filters( 'woocommerce_my_account_edit_address_title', $page_title ); ?></h3>

        <?php do_action( "woocommerce_before_edit_address_form_{$load_address}" ); ?>

/ 无法在此处加载 /

<?php foreach ( $address as $key => $field ) : ?>

                <?php woocommerce_form_field( $key, $field, ! empty( $_POST[ $key ] ) ? wc_clean( $_POST[ $key ] ) : $field['value'] ); ?>

            <?php endforeach; ?>

            <?php do_action( "woocommerce_after_edit_address_form_{$load_address}" ); ?>

            <p>
                <input type="submit" class="button" name="save_address" value="<?php _e( 'Save Address', 'woocommerce' ); ?>" />
                <?php wp_nonce_field( 'woocommerce-edit_address' ); ?>
                <input type="hidden" name="action" value="edit_address" />
            </p>

        </form>

    <?php //endif; ?> 

1 个答案:

答案 0 :(得分:0)

WooCommerce是WordPress的一个插件,你不能在没有WordPress的情况下使用它...例如/my-account/edit-address/my-account实际上就是你正在呈现的页面和edit-address只是一个变量。已将edit-address添加为my-account的端点。您需要为account执行相同操作。

您应该了解what endpoints are

关于此的其他想法。如果您确实想使用account而不是my-account,请查看您的网页以查看&#34;我的帐户&#34;并改变它的固定链接。您还可以创建另一个可以使用account永久链接的页面。然后在您的WooCommerce中使用该页面&gt;设置&gt;帐户标签&gt;我的帐户页面。

如果你有一些自定义的PHP代码,你可以将你的woocommerce插件中的模板复制到你的主题文件夹,然后编辑你需要的文件。阅读Template Structure + Overriding Templates via a Theme

如果我没有解决您的问题,请在下面发表评论。