发布单页的不同风格

时间:2016-08-24 作者:bwalkernz

我们需要根据您的用户旅程不同,为单个页面设置不同的样式。目前,我们在WP中列出了一些活动帖子,它们要么在“参与>活动”页面下,要么在“城市创新中心>参加活动”页面下,有些活动同时在这两个页面中列出。如果您来自“参与>活动”,我们需要单个活动页面具有浅背景,如果您来自“城市创新中心>参加活动”,我们需要单个活动页面具有深色背景。我们不想重复WP中的事件。

https://futurecities.catapult.org.uk/events/

2 个回复
SO网友:bynicolas

你可以听听$_SERVER[\'HTTP_REFERER\'] 并根据该引用向正文中添加一个类

add_filter( \'body_class\',\'wpse_body_classes\' );
function wpse_body_classes( $classes ) { 

  if ( is_page( \'event\' ) ){ // event is the page slug of the page we wish to add the class for


    if( wp_get_referer() == \'/url/of/get_involved\' ){

      $classes[] = \'my-light-bg\';

    }

    elseif( wp_get_referer() == \'/url/of/urban_innovation_center\' ){

      $classes[] = \'my-dark-bg\';

    }

    else {

      $classes[] = \'my-default-bg\';

    }    

  }

  return $classes;

}

EDIT

将代码更新为

利用wp_get_referer

  • 检查我们是否在“事件”页面上,以便过滤器仅在该页面上运行,如果未设置引用者,则向该页面添加默认正文类

  • SO网友:vancoder

    记住检查推荐人的问题,我可能会采取不同的方法。

    我将使用add_query_arg. 添加的参数对于每个参考页都是不同的-例如,get involved > events 可能会添加class=my-light-bg, 鉴于urban innovation center > attend an event 可能会添加class=my-dark-bg.

    然后,您的事件页面本身可以通过查看$\\u GET[“class”]来检索该参数。

    这里的优点是,即使来自书签或搜索引擎结果,也会显示正确的样式。