根据用户角色、Elementor布局中断交换主页

时间:2020-06-10 作者:MCDAndrew

我在一家制造商工作,那里有普通无聊的消费者和批发商。我们想为这两个不同的受众显示不同的主页。消费者将获得更多的品牌概览,而经销商将看到当前只有他们才能享受的促销活动。

经销商必须登录才能看到这一点,我已经为他们创建了一个名为“批发”的角色我还创建了两个主页:一个是消费者主页(在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\');

1 个回复
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抓取头版设置以提取数据之前,实际上更改了头版设置。

这就像告诉一个工人从货架上拿下正确的产品,而不是在他们拿错了产品后,试图把正确的产品推到手中。

相关推荐

Template for landing pages

我正在为一个带有登录页的商业网站(不是博客)使用WP。所以没有帖子,只有我用Elementor页面生成器创建的页面(实际上是“登录页”)。由于一个典型的主题对于登录页业务站点来说有很多不必要的东西,我决定创建一个lightweiht自定义主题。我有一个header.php, footer.php 基本css/js通过functions.php. 我想使用页面生成器创建每个页面的内容。我不知道该放什么index.php. 这是典型的:<?php get_header(); ?>