Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将哈希偏移28px以适应登录Wordpress用户的管理栏_Php_Wordpress_Hash_Hyperlink - Fatal编程技术网

Php 将哈希偏移28px以适应登录Wordpress用户的管理栏

Php 将哈希偏移28px以适应登录Wordpress用户的管理栏,php,wordpress,hash,hyperlink,Php,Wordpress,Hash,Hyperlink,由于在我的Wordpress站点上为登录用户显示的管理栏,哈希链接不能像我希望的那样工作,也就是说,它们应该工作,但是哈希div的顶部被Wordpress管理栏遮住了。所以我想知道是否有一种方法,对于登录的用户,所有散列的位置都可以偏移28px,以便正确显示 据推测,如果有一个脚本可以做到这一点,我需要将其添加到functions.php文件中,并将其包装为: if (is_user_logged_in()) : [script here] endif; 实际上,您需要在JavaScrip

由于在我的Wordpress站点上为登录用户显示的管理栏,哈希链接不能像我希望的那样工作,也就是说,它们应该工作,但是哈希div的顶部被Wordpress管理栏遮住了。所以我想知道是否有一种方法,对于登录的用户,所有散列的位置都可以偏移28px,以便正确显示

据推测,如果有一个脚本可以做到这一点,我需要将其添加到functions.php文件中,并将其包装为:

if (is_user_logged_in()) :

[script here]

endif;

实际上,您需要在JavaScript中实现这一点。我假设您正在运行jQuery。您可以使用以下代码。这将一直运行它:

jQuery(document).ready(function(){

    jQuery(window).bind("hashchange", function() {
        jQuery("html,body").scrollTop(jQuery(window).scrollTop() - 28);
    });

});​
如果您只希望它在登录时运行,那么可以使用您建议的PHP从模板中回送,内容如下(未测试):

如果(用户是否已登录()):
echo'jQuery(document).ready(function(){
jQuery(window.bind(“hashchange”,function()){
jQuery(“html,body”).scrollTop(jQuery(window).scrollTop()-28);
});
});​';
endif;
工作示例:


Thomas

我怀疑您可能想更改CSS,以便在管理栏出现时,您的“哈希链接”所在的div向下移动。没什么特别的,只是相对定位我希望的是一个脚本,如果URL中有散列,它会自动抵消div的位置。但是为什么呢?以正确的方式定位你的DIV会比这更好,不是吗?这样,如果出于某种原因,有另一个酒吧繁殖,你得到同样的伟大结果免费@纳恩。对不起,我不太明白你建议的解决方案。管理栏将页面的所有内容向下移动28像素。这很好。我不想重新定位页面上的任何内容,只要调整页面滚动/跳转到的位置(当URL中有散列时)。也许你想发布一个更详细的答案,这样我就可以了解你的建议了?啊,现在我明白你的问题了,我现在还不太清楚。正如我之前理解的那样,您希望移动
div
,但您只希望锚点的“片段标识符”(据我所知,这就是所谓的片段标识符)向下滚动,因为偏移量以当前形式将其打断。
if (is_user_logged_in()) :

echo '<script>jQuery(document).ready(function(){

        jQuery(window).bind("hashchange", function() {
            jQuery("html,body").scrollTop(jQuery(window).scrollTop() - 28);
        });

      });​</script>';

endif;