如果父页面是由其他作者发布的,则返回该作者的子页

时间:2016-04-30 作者:Sam

我在编写自己的WordPress主题时遇到了一个问题,我需要你的帮助。

我定义了author.php 应该显示给定作者的静态页面和博客页面的文件。你必须知道,我们的网站有很多分、次、甚至次分页面。所有这些页面都是由“网站管理员”帐户发布的。在这些页面中,我们的内容页面位于其中。这些子页面由不同的作者发布,应该显示在作者页面上。

示例:

实践课程(网站管理员)

化学(网站管理员)

定性分析(网站管理员)

阴离子的证明(网站管理员)

硫化物(作者)

碳酸盐岩(作者)

  • (作者)

    阳离子的证明(网站管理员)

      • 在本例中,“硫化物”页面将是实际内容。并且该页面应该在发布id的作者的作者页面上可见。

        我现在添加了以下代码以显示特定作者的页面:

        $author_id = $_GET[\'author\'];
        
        $args = array(
          \'sort_order\' => \'asc\',
          \'sort_column\' => \'post_title\',
          \'authors\' => $author_id,
          \'post_type\' => \'page\',
          \'post_status\' => \'publish\'
          );
        
        $pages = get_pages( $args );
        
           foreach ( $pages as $page ) { ?>
              <div class="col-md-4 article-item" style="cursor: pointer;" onclick="location.href=\'<?php echo get_page_link( $page->ID ); ?>\'">
                 <h4><?php echo $page->post_title; ?></h4>
                 <?php if ( has_post_thumbnail($page->ID) ) {
                    echo get_the_post_thumbnail( $page->ID, \'post-thumbnail\', array( \'class\' => \'col-img\' ) );
                 }
                 else {
                    echo \'<img src="https://placehold.it/200x200?text=Icon" class="col-img wp-post-image round" />\';
                 }
                 ?>
                 <p class="excerpt"><?php echo $page->post_excerpt; ?></p>
              </div>
           <?php } ?>
        
        不幸的是,每个作者的每个页面都会被返回,而不仅仅是该特定作者发布的页面。

        如果我将ID硬编码为一个特定的值-一个在我们这边发布了一些内容页的作者-($author_id = 2;) 未返回任何内容。但是如果硬编码站长的ID,则会显示站长的所有帖子(没有作者发布的内容帖子)!因此,它似乎依赖于这样一个事实,即内容页是子页面。对我来说,WordPress首先检查父页面是否由给定ID发布。如果有,它会检查这些父页面是否有由相同ID发布的子页面。

        在我的例子中,它检查ID“2”的作者是否发布了一个父页,并得到一个布尔值“false”,因此甚至不检查以查找子页。。。

        您知道如何编辑查询,以便即使父页面由其他作者发布,也会返回子页面吗?

        提前感谢!

  • 1 个回复
    最合适的回答,由SO网友:Sam 整理而成

    解决了,我已经解决了这个问题,我将分享我使用的代码,这样其他有这个问题的开发人员也可以解决它。

    这个get_pages()-函数接受;“层次结构”;论点默认情况下,它设置为1(true),这意味着Wordpress将按层次顺序搜索页面以查找其他参数。如果像我的情况一样,你搜索一个作者的页面,而这些页面是另一个作者发布的页面的子页面,Wordpress将找不到它们!为了避免这种不受欢迎的行为,您必须设置;“层次结构”;参数为false(=0)。

    这告诉Wordpress在页面中搜索给定的参数,而不遵循层次结构。

    因此,要返回给定作者的所有页面,必须使用以下代码:

    $pages_args = array(
      \'sort_order\' => \'asc\',
      \'sort_column\' => \'post_title\',
      \'authors\' => $author_id, // has to be a string!!!
      \'post_type\' => \'page\',
      \'post_status\' => \'publish\',
      \'hierarchical\' => 0
    );
    

    相关推荐

    修复已弃用:Get_the_Author_Lastname

    我有一个只有一个php代码的插件<?php /* Plugin Name: COinS Metadata Exposer Plugin URI: http://www.zotero.org Description: Makes your blog readable by Zotero and other COinS interpreters. Version: 0.5 Author: Sean Takats - Center for History a