我在一家制造商工作,那里有普通无聊的消费者和批发商。我们想为这两个不同的受众显示不同的主页。消费者将获得更多的品牌概览,而经销商将看到当前只有他们才能享受的促销活动。
经销商必须登录才能看到这一点,我已经为他们创建了一个名为“批发”的角色我还创建了两个主页:一个是消费者主页(在Wordpress中设置为首页),另一个是经销商主页。经销商页面是使用Elementor构建的消费者页面的复制和粘贴。
我已经想出了一个函数(在theme的function.php文件中),它完全符合我的要求,除了一个缺陷:经销商主页内容的布局被破坏。
代码如下:
// Display different home page for dealer vs consumer
function change_home_dealer($content) {
if (is_user_logged_in()) {
$current_user = wp_get_current_user();
$user = new WP_User($current_user -> ID);
if (in_array(\'Wholesale\', $user->roles) && is_front_page()){
// Grab ID of the page I want to be the dealer front page
$dealer_front_id = 2885;
$dealer_content = get_post($dealer_front_id);
$content = $dealer_content->post_content;
return $content;
} else {
return $content;
}
} else {
return $content;
}
}
add_filter(\'the_content\', \'change_home_dealer\');
SO网友:MCDAndrew
我相信我找到了。代码如下:
// Display different home page for dealer vs consumer
if( is_user_logged_in() ) {
$current_user = wp_get_current_user();
$user = new WP_User($current_user -> ID);
if (in_array(\'Wholesale\', $user->roles)){
$page = get_post(2885);
update_option( \'page_on_front\', $page->ID );
update_option( \'show_on_front\', \'page\' );
} else {
$page = get_post(2847);
update_option( \'page_on_front\', $page->ID );
update_option( \'show_on_front\', \'page\' );
}
} else {
$page = get_post(2847);
update_option( \'page_on_front\', $page->ID );
update_option( \'show_on_front\', \'page\' );
}
如果我说我肯定我能理解,那就是在撒谎。然而,从我收集的信息来看,我的原始代码本质上是试图在内容被吐出的中间更改页面内容。
另一方面,这段代码(对这段代码的旋转:https://stackoverflow.com/questions/20039607/different-wordpress-front-page-for-logged-out-and-logged-in-users) 在Wordpress抓取头版设置以提取数据之前,实际上更改了头版设置。
这就像告诉一个工人从货架上拿下正确的产品,而不是在他们拿错了产品后,试图把正确的产品推到手中。