在变量中发布循环值(functions.php)

时间:2016-01-18 08:11:45

标签: php arrays wordpress

所以,我有以下帖子循环来展示帖子(wp functions.php)。

global $post;    
$args = array( 
    'post_type' => 'post',      
    'posts_per_page' => 3,  
    'orderby' => 'date',            
    'order' => 'DESC'
    );
$loop = new WP_Query( $args );
$id = get_the_ID();
while ( $loop->have_posts() ) : $loop->the_post(); 

$my_post['sample_id'] =  get_the_title( $id );  

endwhile; 
wp_reset_postdata();    

我需要在一个值数组中拥有帖子的标题(例如array [title1,title2,title3])。

然而,它只获得一个冠军。

如何使$my_post变量具有三个值?

(换句话说,我只想在变量中使用三个标题)

修改

....
while ( $loop->have_posts() ) : $loop->the_post();   
array_push($titleArray, get_the_title($id));    
endwhile;
$tag_post['sample_id'] =  $titleArray;  
echo json_encode($tag_post);
wp_reset_postdata();
exit;   

4 个答案:

答案 0 :(得分:1)

以下是将所有标题存储到数组中的更新代码,

global $post;    
$args = array( 
    'post_type' => 'post',      
    'posts_per_page' => 3,  
    'orderby' => 'date',            
    'order' => 'DESC'
    );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); 
    $titleArray[] = get_the_title();
endwhile; 

print_r($titleArray); // Store to a variable as per your needs
wp_reset_postdata();   

我希望这会有所帮助。

答案 1 :(得分:1)

例如:

<?php 
global $post;
global $all_post_titles; //possibly needed//
$all_post_titles = array();
$args = array( 
    'post_type' => 'post',      
    'posts_per_page' => 3,  
    'orderby' => 'date',            
    'order' => 'DESC'
    );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); $all_post_titles[] = the_title('','',false); ?></a></li>
<?php endforeach; ?>

<?php 
  global $all_post_titles; //possibly needed//
  echo my_get_the_term_list( $post->ID, $taxonomy,  '', ' ', '', $all_post_titles );
?>

取决于第二个代码的位置,您可能不需要将$all_post_titles声明为全局变量。

如果您想将所有发布数据放入数组,那么此代码将为您提供帮助。

$query = new WP_Query(array('post_type' => 'post'));
$posts = $query->get_posts();
$postArray = array();
foreach($posts as $post) {
    // Do your stuff, e.g.
    // $postArray[] = $post->post_name;
    // store data to array;
}

答案 2 :(得分:1)

您只需更改代码中的一行即可。

替换它

$my_post['sample_id'] =  get_the_title( $id );  

用它:

$my_post['title'][] =  get_the_title( );  // $my_post will be your array containing all titles of your post.

$ my_post []会像 array_push 那样。

我希望它对你有用。

答案 3 :(得分:1)

最简单的方法是使用wp_list_puck()

您可以尝试以下

$args = [
    // Your arguments
];
$q = get_posts( $args );
$titles = wp_list_pluck( $q, 'post_title' );
var_dump( $titles );