Assigning Wordpress post information to PHP array

2019-08-08 18:55发布

PHP to Javascript with values from Wordpress

I hope the following code explains what i want.

    <?php
    $title = array();
    $i=0;
    if ( have_posts() ) : while ( have_posts() ) : the_post(); 
    $title[i]=the_title();
    $link[i]=the_permalink();
    $i++;
    endwhile; else:  

    $title[0]="Welcome to my website.";
    $link[0]="/index.php";

    endif; 

    ?> 

    <script>

    var list=new Array();
    list[0]='<a href="<?php echo $link[0] ?>"><?php echo $title[0] ?></a>';
    list[1]='<a href="<?php echo $link[1] ?>"><?php echo $title[1] ?></a>';
    list[2]='<a href="<?php echo $link[2] ?>"><?php echo $title[2] ?></a>';
    list[3]='<a href="<?php echo $link[3] ?>"><?php echo $title[3] ?></a>';
    list[4]='<a href="<?php echo $link[4] ?>"><?php echo $title[4] ?></a>';

    </script>

My need is to

  • get the latest/popular 5 post title and its permalink
  • then assign it to the javascript variable like in the above code or better
  • Why I need this

    Iam creating a simple & working news website wordpress template. And I used a javascript code(got from the web) that will display any text i put inside a specific array variable like a scrolling text( in a flash news/breaking news style).

    Now I want the scrolling text to be dynamically updated with the latest blog/news post instead being static like now.

        ...
        var list=new Array();
        list[0]='<a href="This is manually typed news one.';
        list[1]='<a href="This is manually typed news two.';
        list[2]='This is manually typed news three.';
        list[3]='This is manually typed news four.';
        list[4]='This is manually typed news five.';
        ...
    

    Reference

    The website iam creating currently is temporarily available on this address

    www.iamone.in/todaynewstv.

    Look at the Flash News section - that is what iam talking about.

    I got the complete javascript code from http://javascripts.vbarsan.com/

    In short, The Output Iam expecting is

    To display the latest 5 or 10 blog posts in a scrolling text style without manually updating.

    [Sorry for any wrong communication on my side. Hope you people understand my question. ]

    Thanks. :)

    1条回答
    Emotional °昔
    2楼-- · 2019-08-08 19:17

    Just json_encode the array. Here is an example:

    First you get your posts:

    $args = array(
        'posts_per_page'   => 5,
        'offset'           => 0,
        'post_status'      => 'publish'
    );
    $posts_array = get_posts( $args );
    

    Then you json_encode it in a script tag.

    <script type="text/javascript">
            jQuery(function(){
                var postArray = <?php echo json_encode($posts_array); ?>;
                console.log(postArray);
                for (e in postArray) {
                    var postInfo = postArray[e];
                    console.log(postInfo);
                    //how to get the title:
                    var postTitle = postInfo.post_title;
                }
            });
        </script>
    

    The console log will show you which data you can access. Here is a screenshot:

    Screenshot/Example of json encoded php variable in javascript

    查看更多
    登录 后发表回答