Internal Links to Pages in PHP?

What is the best way of linking to WordPress pages with PHP? Considering that I move the page from a local server to a live server to another URL?

<a href="/wordpress/services" title="Read More" class="yellowButton">Read more</a> 

How could you replace this code with PHP linking to the WordPress page.

/wordpress/services

Related posts

Leave a Reply

4 comments

  1. Page Permalink from $id

    If you know the Page $id, use get_permalink():

    <?php $permalink = get_permalink( $id ); ?>
    

    Page Permalink from $slug

    If you know the Page $slug, such as /about (including hierarchy, such as /about/work), use get_page_by_path() to determine the Page $id, then use get_permalink().

    <?php
    $page_object = get_page_by_path( $slug );
    $page_id = $page_object->ID;
    $permalink = get_permalink( $page_id );
    ?>
    

    Page Permalink from $title

    If you know the Page $title, such as “Some Random Page Name”, use get_page_by_title(), then use get_permalink():

    <?php
    $page_object = get_page_by_title( $title );
    $page_id = $page_object->ID;
    $permalink = get_permalink( $page_id );
    ?>
    
  2. If you want to hardcode ‘/page-names’ you can use home_url(‘/wordpress/services’) function with esc_url() for sanitizing URLs – it will always get you full url of home page ( local or live )

    <a href="<?php echo esc_url( home_url( '/wordpress/services' ) ); ?>"
     title="Read More" class="yellowButton">
     Read more
    </a> 
    
  3. You can use a shortcode to insert the domain name into the internal link and then just add the page url on the end e.g [domain_name]/page-name.

    Add this code into your child themes function.php and it’s ready to go!

    //add shortcode that displays current site name
    function domain_name(){
    $currentDomain = "yoursite.com";
    return $currentDomain;
    }
    
    add_shortcode('domain_name', 'domain_name');
    

    I’ve tested this on multiple live sites and it appears to be working perfectly.

    Hope this is what you’re looking for!