我是一个相当新的PHP开发人员,我试图创建的是“myaccount”页面的自定义端点。我正在尝试创建一个“添加访客”的终点。我发现很难在网上找到任何文档。什么到目前为止,我所做的是使用这个混帐枢纽回购wooCommerce自定义端点
我创建这些文件,并把他们的插件/ woocommerce/includes目录。但他们似乎没有效果。我把它们放在正确的目录中吗?我是否在别的地方叫这些类?我不知道我错在哪里。有些人可以请教我这个问题。
<?php
/*
* Add custom endpoint that appears in My Account Page - WooCommerce 2.6
* Ref - https://gist.github.com/claudiosmweb/a79f4e3992ae96cb821d3b357834a005#file-custom-my-account-endpoint-php
*/
class My_Custom_My_Account_Endpoint {
/**
* Custom endpoint name.
*
* @var add_students_details
*/
public static $endpoint = 'add_students_details';
/**
* Plugin actions.
*/
public function __construct() {
// Actions used to insert a new endpoint in the WordPress.
add_action('init', array($this, 'add_endpoints'));
add_filter('query_vars', array($this, 'add_query_vars'), 0);
// Change the My Accout page title.
add_filter('the_title', array($this, 'endpoint_title'));
// Insering your new tab/page into the My Account page.
add_filter('woocommerce_account_menu_items', array($this, 'new_menu_items'));
add_action('woocommerce_account_' . self::$endpoint . '_endpoint', array($this, 'endpoint_content'));
}
/**
* Register new endpoint to use inside My Account page.
*
* @see https://developer.wordpress.org/reference/functions/add_rewrite_endpoint/
*/
public function add_endpoints() {
add_rewrite_endpoint(self::$endpoint, EP_ROOT | EP_PAGES);
}
/**
* Add new query var.
*
* @param array $vars
* @return array
*/
public function add_query_vars($vars) {
$vars[] = self::$endpoint;
return $vars;
}
/**
* Set endpoint title.
*
* @param string $title
* @return string
*/
public function endpoint_title($title) {
global $wp_query;
$is_endpoint = isset($wp_query->query_vars[ self::$endpoint ]);
if ($is_endpoint && ! is_admin() && is_main_query() && in_the_loop() && is_account_page()) {
// New page title.
$title = __('My Stuff', 'woocommerce');
remove_filter('the_title', array($this, 'endpoint_title'));
}
return $title;
}
/**
* Insert the new endpoint into the My Account menu.
*
* @param array $items
* @return array
*/
public function new_menu_items($items) {
// Remove the logout menu item.
$logout = $items['customer-logout'];
unset($items['customer-logout']);
// Insert your custom endpoint.
$items[ self::$endpoint ] = __('My Stuff', 'woocommerce');
// Insert back the logout item.
$items['customer-logout'] = $logout;
return $items;
}
/**
* Endpoint HTML content.
*/
public function endpoint_content() {
wc_get_template('myaccount/navigation.php'); ?>
<div class="woocommerce-MyAccount-content">
<p>Hello World! - custom field can go here</p>
</div>
<?php
}
/**
* Plugin install action.
* Flush rewrite rules to make our custom endpoint available.
*/
public static function install() {
flush_rewrite_rules();
}
}
new My_Custom_My_Account_Endpoint();
// Flush rewrite rules on plugin activation.
register_activation_hook(__FILE__, array('My_Custom_My_Account_Endpoint', 'install'));
您好,欢迎堆栈溢出。请在您的问题中包含所有相关代码。 –
@ SteffenD.Sommer您好,谢谢您的回复。那没关系,我是否正确添加了代码。 –
差不多。代码片段功能用于HTML/CSS/JS。由于你的代码是PHP,我建议使用代码块代替。 –