• Saeed_Pooyanfar

    (@saeed_pooyanfar)


    Hi…
    I’m new to wordpress and want to know how it works!!
    At this moment i started read wordpress functions from here:
    https://codex.www.ads-software.com/Function_Reference
    The first function is get_adjacent_post and it located in wp-includes/link-template.php
    here is get_adjacent_post function codes:

    function get_adjacent_post( $in_same_term = false, $excluded_terms = '', $previous = true, $taxonomy = 'category' ) {
    	global $wpdb;
    
    	if ( ( ! $post = get_post() ) || ! taxonomy_exists( $taxonomy ) )
    		return null;
    
    	$current_post_date = $post->post_date;
    
    	$join = '';
    	$where = '';
    
    	if ( $in_same_term || ! empty( $excluded_terms ) ) {
    		$join = " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id";
    		$where = $wpdb->prepare( "AND tt.taxonomy = %s", $taxonomy );
    
    		if ( ! empty( $excluded_terms ) && ! is_array( $excluded_terms ) ) {
    			// back-compat, $excluded_terms used to be $excluded_terms with IDs separated by " and "
    			if ( false !== strpos( $excluded_terms, ' and ' ) ) {
    				_deprecated_argument( __FUNCTION__, '3.3', sprintf( __( 'Use commas instead of %s to separate excluded terms.' ), "'and'" ) );
    				$excluded_terms = explode( ' and ', $excluded_terms );
    			} else {
    				$excluded_terms = explode( ',', $excluded_terms );
    			}
    
    			$excluded_terms = array_map( 'intval', $excluded_terms );
    		}
    
    		if ( $in_same_term ) {
    			if ( ! is_object_in_taxonomy( $post->post_type, $taxonomy ) )
    				return '';
    			$term_array = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );
    
    			// Remove any exclusions from the term array to include.
    			$term_array = array_diff( $term_array, (array) $excluded_terms );
    			$term_array = array_map( 'intval', $term_array );
    
    			if ( ! $term_array || is_wp_error( $term_array ) )
    				return '';
    
    			$where .= " AND tt.term_id IN (" . implode( ',', $term_array ) . ")";
    		}
    
    		if ( ! empty( $excluded_terms ) ) {
    			$where .= " AND p.ID NOT IN ( SELECT tr.object_id FROM $wpdb->term_relationships tr LEFT JOIN $wpdb->term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id) WHERE tt.term_id IN (" . implode( $excluded_terms, ',' ) . ') )';
    		}
    	}
    
    	$adjacent = $previous ? 'previous' : 'next';
    	$op = $previous ? '<' : '>';
    	$order = $previous ? 'DESC' : 'ASC';
    
    	/**
    	 * Filter the JOIN clause in the SQL for an adjacent post query.
    	 *
    	 * The dynamic portion of the hook name, <code>$adjacent</code>, refers to the type
    	 * of adjacency, 'next' or 'previous'.
    	 *
    	 * @since 2.5.0
    	 *
    	 * @param string $join           The JOIN clause in the SQL.
    	 * @param bool   $in_same_term   Whether post should be in a same taxonomy term.
    	 * @param array  $excluded_terms Array of excluded term IDs.
    	 */
    	$join  = apply_filters( "get_{$adjacent}_post_join", $join, $in_same_term, $excluded_terms );
    
    	/**
    	 * Filter the WHERE clause in the SQL for an adjacent post query.
    	 *
    	 * The dynamic portion of the hook name, <code>$adjacent</code>, refers to the type
    	 * of adjacency, 'next' or 'previous'.
    	 *
    	 * @since 2.5.0
    	 *
    	 * @param string $where          The <code>WHERE</code> clause in the SQL.
    	 * @param bool   $in_same_term   Whether post should be in a same taxonomy term.
    	 * @param array  $excluded_terms Array of excluded term IDs.
    	 */
    	$where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $where", $current_post_date, $post->post_type ), $in_same_term, $excluded_terms );
    
    	/**
    	 * Filter the ORDER BY clause in the SQL for an adjacent post query.
    	 *
    	 * The dynamic portion of the hook name, <code>$adjacent</code>, refers to the type
    	 * of adjacency, 'next' or 'previous'.
    	 *
    	 * @since 2.5.0
    	 *
    	 * @param string $order_by The <code>ORDER BY</code> clause in the SQL.
    	 */
    	$sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );
    
    	$query = "SELECT p.ID FROM $wpdb->posts AS p $join $where $sort";
    	$query_key = 'adjacent_post_' . md5( $query );
    	$result = wp_cache_get( $query_key, 'counts' );
    	if ( false !== $result ) {
    		if ( $result )
    			$result = get_post( $result );
    		return $result;
    	}
    
    	$result = $wpdb->get_var( $query );
    	if ( null === $result )
    		$result = '';
    
    	wp_cache_set( $query_key, $result, 'counts' );
    
    	if ( $result )
    		$result = get_post( $result );
    
    	return $result;
    }

    In first if(){} we called get_post() function that located in wp-includes/post.php and wp-includes/class-wp-atom-server.php
    Now my question! :
    Why get_post() is working?!
    It’s located in (wp-includes/post.php and wp-includes/class-wp-atom-server.php) and we don’t have this syntax:

    include "post.php";
    OR
    include "class-wp-atom-server.php";

    ?! ??

Viewing 3 replies - 1 through 3 (of 3 total)
Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘how wordpress call own functions?’ is closed to new replies.