现在,我正在使用 Sage 9 创建一个主题。我已经安装了 Barba,它工作正常,除了一件事。我正在尝试在我的 data-barba-namespace 中正确获取页面名称。现在,我正在使用以下内容:
data-barba-namespace="{{ get_post_field('post_name', $post_id) }}"
但是对于一个名为“Work”的页面(显示来自我使用 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
但是我仍然很难找到工作页面的解决方案,所以给他们一个唯一的命名空间名称