我想编写一个插件,该插件能够根据get参数更改起始页:
下面的代码是完整的插件。
function GET_Different_Page_on_front_parameter() {
if (!session_id()) {
session_start();
}
if(!($_SESSION[\'start\'])){
$_SESSION[\'start\']=$_GET[\'view\'];
}
else{}
}
add_action( \'init\', \'GET_Different_Page_on_front_parameter\');
add_action( \'pre_get_posts\', \'redirect_another_homepage\');
function redirect_another_homepage(){
$front_page_slug=$_SESSION[\'start\'];
$front_page_id=get_page_by_path($front_page_slug);
$content = $content.$front_page_id->ID;
if(is_home()){
$page=get_permalink($front_page_id->ID);
?>
<script type="text/javascript">
<!--
window.location.href = "<?php echo $page;?>";
//–>
</script>
<?php
}else{}}
我以为它昨天起作用了,但也许它只是看起来起作用了。
我还可以把你作为贡献者放在WordPress插件库中。
SO网友:Douglas.Sesar
我想您可以使用template\\u重定向挂钩。为了便于阅读,我需要对您的代码进行一些更改:
<?php
/*
Plugin Name: Homepage redirect for SEOT
Plugin URI:
Description:
Version: 0.0.1
Author: Douglas L Sesar
Author URI:
License: GPLv2
*/
function GET_Different_Page_on_front_parameter() {
if (!session_id()):
session_start();
endif;
if(!($_SESSION[\'start\'])):
$_SESSION[\'start\']=$_GET[\'view\'];
endif;
}
add_action( \'init\', \'GET_Different_Page_on_front_parameter\');
add_action( \'template_redirect\', \'redirect_another_homepage\');
function redirect_another_homepage(){
$front_page_slug=$_SESSION[\'start\'];
$front_page_id=get_page_by_path($front_page_slug);
$content = $content.$front_page_id->ID;
if(is_home()):
$page=get_permalink($front_page_id->ID);
wp_redirect( $page );
exit();
endif;
}
我没有检查您的会话逻辑,但我认为这应该适合您(未测试)。它至少应该给你一个尝试的方向。
SO网友:seot
我找到了解决方案。。。疯狂地回答我自己的问题,但这里有一个解决方案http://wordpress.org/plugins/get-different-front-page/
谢谢你的帮助。为什么在这种情况下,\\u home()不起作用,我仍然不知道。
function GET_Different_Page_on_front_parameter() {
if (!session_id()) {
session_start();
}
}
add_action( \'init\', \'GET_Different_Page_on_front_parameter\');
/* The fucntion GET_Different_Page_on_front_parameter() simply starts a session,
so that one viewer gets the same homepage every time */
add_filter( \'template_redirect\', \'redirect_another_homepage_gdfp\');
function redirect_another_homepage_gdfp(){
if(!($_SESSION[\'start\'])){
$_SESSION[\'start\']=$_GET[\'view\'];
}
else{} // this if is capturing the GET parameter of the start
$front_page_slug=$_SESSION[\'start\'];
$front_page_id=get_page_by_path($front_page_slug);
$perma=get_permalink( $front_page_id);
if(is_front_page()){ // I still not know why is_home is not working here
wp_redirect( $perma);
exit();
}else{}
}