如何编写查询函数作为查询短码?

时间:2018-08-30 作者:Ben

我问这个问题是为了this one.

我在中有此查询功能functions.php 但我不想改变functions.php (CPT除外)。

我想通过快捷码直接从WP GUI打印相同的数据。

a应该如何functions.php 是否将查询函数转换为查询快捷码?

$posts = get_posts(array(
    "post_type"=>"book_pages",
    "post_status"=>"publish",
    "posts_per_page"=>-1 
));

if ($posts && count($posts)>0) 
{
    global $post;
    foreach ($posts as $post)
    {
        setup_postdata($post);
        the_title(); //prints out the title of this post
    }
    wp_reset_postdata(); 
}

1 个回复
SO网友:cjbj

A.shortcode 本质上是一个触发器,它会导致您执行一段代码functions.php 文件与现有代码的唯一真正区别在于,您没有立即打印结果,而是从函数返回结果。而且get_posts 不是执行多个循环的首选方法,如中所示the first paragraph in the codex. 更好地使用wp_query 直接地像这样:

add_shortcode (\'wpse312883\', \'wpse312883_query_shorcode\' );

function wpse312883_query_shorcode () {
  $all_post_titles = "";
  $args = (array(
    "post_type"=>"book_pages",
    "post_status"=>"publish",
    "posts_per_page"=>-1 
    ));
  $the_query = new WP_Query( $args );
  if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
      $the_query->the_post();
      $all_post_titles .= get_the_title();
      }
    }
  wp_reset_postdata();
  return $all_post_titles;
  }
否,如果您在GUI中的帖子内容中包含[wpse312883],您将获得帖子标题列表。您可能需要将一些html添加到$all_post_titles 取决于结果的格式。

结束

相关推荐

Prevent loading of functions

我使用了一个主题,其中包括名为“Sharethis”的服务的共享功能和字体真棒。据我所知,函数是从函数中的以下行加载的。php。TT\\u队列::add\\u css(数组(“//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css”);TT\\u排队::add\\u js(array(\'https://ws.sharethis.com/button/buttons.js\'));如何使用子函数(因为父函数中的更改将在更新