微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正确获取页面名称带有 Barba.JS 和 Wordpress 的 data-barba-namespace

如何解决正确获取页面名称带有 Barba.JS 和 Wordpress 的 data-barba-namespace

现在,我正在使用 Sage 9 创建主题。我已经安装了 Barba,除了一件事之外,它运行良好。我正在尝试在我的 data-barba-namespace 中正确获取页面名称。现在,我正在使用以下内容

data-barba-namespace="{{ get_post_field('post_name',$post_id) }}"

但是对于一个名为“工作”的页面显示我使用 CPT UI 创建的自定义帖子类型的作品),我创建了一个模板(template-work.blade.PHP),并且在其中我有不同的查询不同类别的不同作品。我的主要问题是我之前在此页面上的代码返回的是 data-barba-namespace 中一个工作/项目的名称,而不是页面名称......我不知道为什么

所以我尝试使用以下代码

<?PHP
      $pagename = get_query_var('pagename');
      if ( !$pagename && $id > 0 ) {
      $post = $wp_query->get_queried_object();
      $pagename = $post->post_name;
      }
?> 

所以

data-barba-namespace="{{ $pagename }}"

但是这个问题是因为我使用的是静态首页(创建了一个 front-page.blade.PHP 文件),主页的 data-barba-namespace 是空的,即使它适用于另一个页。并且此解决方案无法像 get_post_field('post_name',$post_id) 那样正确获取工作页面名称

我的最后一个问题是我创建的自定义帖子类型工作。当使用我的第一个解决方案时,我的工作页面提到了这个问题(在 data-barba-namespace 中输入工作名称而不是“work”)和另一个很明显的问题:在 data-barba-namespace 中,我有项目的名称。除了我必须为所有项目创建 barba 过渡之外,这应该很棒……即使对于像我这样的初学者来说也很糟糕!我宁愿在我的 data-barba-namespace 中有一个“工作页面”或类似的东西,以便为我的所有工作页面创建一个过渡。但我不知道如何做到这一点,我什么也找不到..

非常感谢任何帮助!

编辑:编辑:使用第二种解决方案,我发现我可以添加一个条件语句来检查它是否是主页。由于某些原因,它第一次不起作用..这是我正在使用的:

@PHP
      if( is_home() || is_front_page() ){
        $pagename = "home";
      } else {
        $pagename = get_query_var('pagename');
        if ( !$pagename && $id > 0 ) {
          // If a static page is set as the front page,$pagename will not be set. Retrieve it from the queried object
          $post = $wp_query->get_queried_object();

          $pagename = $post->post_name;
        }
      }
@endPHP

但是我仍然找不到工作页面解决方案,所以给它们一个唯一的命名空间名称

解决方法

问题解决了!我使用了以下内容:

@php
    function is_post_type($type){
      global $wp_query;
      if($type == get_post_type($wp_query->post->ID))
          return true;
      return false;
    }

      if( is_home() || is_front_page() ){
        $pagename = "home";
      } elseif (is_single() && is_post_type('work')){
        $pagename = "work-item";
      } else {
        $pagename = get_query_var('pagename');
        if ( !$pagename && $id > 0 ) {
          // If a static page is set as the front page,$pagename will not be set. Retrieve it from the queried object
          $post = $wp_query->get_queried_object();

          $pagename = $post->post_name;
        }
      }
@endphp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。