Я пытаюсь создать версию «Моя учетная запись» с вкладками в WooCommerce.
Я построил свои страницы в php с помощью начальной загрузки CSS и включил верхний и нижний колонтитулы wordpress, чтобы страница загружалась правильно.
Вкладки отображаются, как и ожидалось, у меня возникла проблема с URL-адресами конечной точки в woocommerce:
- 'edit-address'
- 'view-order'
Эти конечные точки генерируются динамически и добавляются к URL: 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
Проблема в:
Я предполагаю, что проблема вызвана тем, что мои страницы являются внешними страницами php и не хранятся в базе данных wp?
Есть ли способ настроить URL-адрес конечной точки, чтобы он правильно добавлялся и загружал страницу?
Ссылка на страницу на моем сайте: www.thecookerytutor dot co dot uk/account
Страница моего личного аккаунта woocommerce: 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; ?>
WooCommerce это плагин для WordPress, вы не можете использовать его без WordPress … например /my-account/edit-address/
, тот my-account
на самом деле страница, которую вы рендеринг и edit-address
это просто переменная. edit-address
был добавлен в качестве конечной точки my-account
, вам нужно сделать то же самое для вашего account
,
Вы должны получить представление о что такое конечные точки.
Другие мысли по этому поводу. Если вы действительно хотите использовать account
и не my-account
найдите на своих страницах «Мой аккаунт» и измените его постоянную ссылку. Вы также можете создать другую страницу, которая может использовать account
в этом постоянная ссылка. Затем используйте эту страницу в вашей WooCommerce> Настройки> вкладка Аккаунт> Страница моей учетной записи.
Если у вас есть несколько пользовательских php-кодов, вы можете просто скопировать шаблон из вашего плагина woocommerce в папку вашей темы и отредактировать нужный файл. Читать Структура шаблона + переопределение шаблонов через тему.
И если я не рассмотрел вашу проблему, прокомментируйте ниже.
Других решений пока нет …