基于URL参数控制页面内容可见性

时间:2019-08-13 作者:Jim Duggan

访问者访问页面

例如:https://www.example.com/wp-login.php?action=rp&key=abc&login=jim

我想有一个文本块,仅当URL有?动作=rp

和一个文本块,显示url是否为裸url。

有许多内容可见性插件可以根据角色等控制可见性。

但我找不到一个可以基于URL参数控制可见性的。

是否存在?如果没有,我还有其他方法可以做到这一点吗?

2 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

You can use add_shortcode() to register custom Shortcodes for restricting access to certain parts of the post content.

And here\'s a working example, with specific to your case:

function my_rp_shortcode( $atts = [], $content = \'\', $tag = \'\' ) {
    if ( \'if-rp\' === $tag ) {
        // Return $content if the URL query string has action=rp.
        return ( isset( $_GET[\'action\'] ) && \'rp\' === $_GET[\'action\'] ) ? $content : \'\';
    } else { // if-not-rp
        // Return $content if the URL query string doesn\'t have action=rp.
        return ( empty( $_GET[\'action\'] ) || \'rp\' !== $_GET[\'action\'] ) ? $content : \'\';
    }
}
add_shortcode( \'if-rp\', \'my_rp_shortcode\' );
add_shortcode( \'if-not-rp\', \'my_rp_shortcode\' );

You\'d add the code to the theme functions file and use the Shortcodes like so:

[if-rp]
This content is shown only if the query string "action" is set to "rp".
Example: example.com/login/?action=rp
[/if-rp]

[if-not-rp]
This content is shown only if the query string "action" is NOT set or the value is NOT "rp".
Example: example.com/login/?action= (empty "action")
Example 2: example.com/login/       (no "action")
[/if-not-rp]

You can change the logic, use two independent Shortcode functions, replace the tags (if-rp and if-not-rp), etc. if you want to. :)

SO网友:Richard Good

如果不想使用短代码,可以使用排队将自定义CSS添加到标题中,将类添加到内容中,然后在CSS中切换显示无。

将此添加到您的函数中。php或自定义函数。php文件:

function wp_89494_enqueue_scripts() {
  if ( isset( $_GET[\'src\'] ) && \'pc\' === $_GET[\'src\'] ) {
    wp_enqueue_style( 
      \'wpse_89494_style_1\', 
      get_stylesheet_directory_uri(). \'/pcast.css\' 
    );
  }
  
}

add_action( \'wp_enqueue_scripts\', \'wpse_89494_enqueue_scripts\' );
然后将此链接发送到您的url:

/?src=pc
并将其发送到文件pcast。放置在子主题文件夹中的css:

.stuff-to-hide {display:none !important;}
灵感来源于此线:

How to enqueue the style using wp_enqueue_style()