根据获取的GET参数更改页面

时间:2014-04-08 作者:seot

我想编写一个插件,该插件能够根据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插件库中。

2 个回复
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{}


}

结束

相关推荐

Plugins_url函数混合了系统路径和URL

在我的WordPress小部件中,我使用以下代码:wp_register_script(\'jquery-ui.widget\', plugins_url(\'assets/js/jquery-ui-1.9.2.widget.js\', dirname( __FILE__ ))); 不幸的是,代码给了我一个无效的URL,它与我的系统路径混合在一起:http://test.dev/wp-content/plugins/C:/projects/wordpress/plugins/assets/js/