是否可以解决搜索.php中循环内条件检查的问题?

时间:2017-10-03 作者:Jonathan Ryan Patterson

Main Issue: 我无法在搜索的主循环中使用Wordpress条件检查(is\\u page()、is\\u front\\u page()和is\\u page\\u template())。php文件。

我知道Codex状态是\\u page(),其他条件检查在循环中不起作用。所以试着找出解决办法。

Objective: 我对主页和其他模板上输入的所有内容使用高级自定义字段,而不是使用默认的页面编辑器。当有人搜索时,我希望每个返回的项目都具有已输入ACF字段的特征图像(后缩略图)、标题、永久链接和描述性文本,因为我无法使用\\u content()或\\u摘录()。

所以在我搜索的循环中。php,我正在做一些检查,以查看返回的项目是什么帖子类型/页面,或者正在使用什么模板,以便检索适当的内容。

我可以使用“page”==get\\u post\\u type()作为我通常使用is\\u page()的替代方法。我只是不知道如何检查它是首页还是使用特定模板的页面。正如我提到的,is\\u front\\u page()和is\\u page\\u template()在主循环中不起作用。

我也不能使用页面名称进行检查,因为一旦我将主页(静态首页)交给我的客户,他们开始创建真正的内容,主页的页面名称可能会更改。很明显,这个模板可以在多个页面上使用,在客户端创建之前,我不知道这些页面的名称。我正在寻找一个更好的长期解决方案,它可以在将来处理客户端创建的任何页面。

虽然非常感谢您的帮助,但我所要求的是,请不要为此推荐插件,我希望通过编程实现这一点。

提前感谢!

1 个回复
最合适的回答,由SO网友:Jonathan Ryan Patterson 整理而成

好的,所以我仍然无法找出检查返回的帖子是否是静态首页的最佳方法(不获取并比较url)。但是,我知道如何使用get\\u page\\u template\\u slug()检查返回的项目是否使用特定的页面模板。在遇到这个问题之前,我不知道这个函数存在。幸运的是,我的首页使用的是自定义页面模板,因此目前不需要is\\U front\\u page()的变通方法。

因此,我通常使用的是\\u page\\u template(\'templates/template name.php\'),我可以使用以下内容进行检查:

$id = get_the_ID();
$template_slug = get_page_template_slug( $id );

if( $template_slug === \'templates/template-name.php\' ) :
    do stuff
endif;

结束