Sunday, March 29, 2015

wordpress Create new custom page like posts page on backend side


add_action('init', 'article_register');

function article_register() {

$labels = array(
'name' => _x('Articles', 'post type general name'),
'singular_name' => _x('Article Item', 'post type singular name'),
'add_new' => _x('Add New', 'Article item'),
'add_new_item' => __('Add New Article Item'),
'edit_item' => __('Edit Article Item'),
'new_item' => __('New Article Item'),
'view_item' => __('View Article Item'),
'search_items' => __('Search Article'),
'not_found' =>  __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);

$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'menu_icon' => get_stylesheet_directory_uri() . '/article16.png',
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','thumbnail')
 );

register_post_type( 'article' , $args );
}
register_taxonomy("Skills", array("article"), array("hierarchical" => true, "label" => "Skills", "singular_label" => "Skill", "rewrite" => true));

Wordpress create custom page with (Next & Previous) Pagination.


1) Create a page on theme folder name "custom2.php"
2) Paste following code into custom2.php file

<?php
/*
Template Name: Custom Query category page.
*/
?>
<?php get_header(); ?>
<h3>Recent Articles</h3><br />
<ul>
<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('showposts=2&cat=1'.'&paged='.$paged);
?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<div class="navigation">
  <div class="alignleft"><?php previous_posts_link('&laquo; Previous') ?></div>
  <div class="alignright"><?php next_posts_link('Next &raquo;') ?></div>
</div>
<?php $wp_query = null; $wp_query = $temp;?>
<?php get_footer(); ?>


3) Create one page on backend side and select template "Custom Query category page".
That's it.

Wordpress display post by category on custom page template.


1) Create a page on theme folder name "custom.php"
2) Paste following code into custom.php file



<?php
/*
Template Name: Custom category page.
*/
?>

<?php get_header(); ?>

<h2>Post of category "Uncategorized"</h2><br />

<?php

function custom_pagination($numpages = '', $pagerange = '', $paged='') {

  if (empty($pagerange)) {
    $pagerange = 2;
  }

  /**
   * This first part of our function is a fallback
   * for custom pagination inside a regular loop that
   * uses the global $paged and global $wp_query variables.
   *
   * It's good because we can now override default pagination
   * in our theme, and use this function in default quries
   * and custom queries.
   */
  global $paged;
  if (empty($paged)) {
    $paged = 1;
  }
  if ($numpages == '') {
    global $wp_query;
    $numpages = $wp_query->max_num_pages;
    if(!$numpages) {
        $numpages = 1;
    }
  }

  /**
   * We construct the pagination arguments to enter into our paginate_links
   * function.
   */
  $pagination_args = array(
    'base'            => get_pagenum_link(1) . '%_%',
    'format'          => 'page/%#%',
    'total'           => $numpages,
    'current'         => $paged,
    'show_all'        => False,
    'end_size'        => 1,
    'mid_size'        => $pagerange,
    'prev_next'       => True,
    'prev_text'       => __('&laquo;'),
    'next_text'       => __('&raquo;'),
    'type'            => 'plain',
    'add_args'        => false,
    'add_fragment'    => ''
  );

  $paginate_links = paginate_links($pagination_args);

  if ($paginate_links) {
    echo "<nav class='custom-pagination'>";
      echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $numpages . "</span> ";
      echo $paginate_links;
    echo "</nav>";
  }

}


  $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

  $custom_args = array(
      'post_type' => 'post',
      'posts_per_page' => 2,
      'paged' => $paged
    );

  $custom_query = new WP_Query( $custom_args ); ?>

  <?php if ( $custom_query->have_posts() ) : ?>
 
    <!-- the loop -->
    <?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
      <article class="loop">
        <h3><?php the_title(); ?></h3>
        <div class="content">
          Excerpt : <?php the_excerpt(); ?><br />
 Content : <?php the_content(); ?><br />
 Link Page : <?php wp_link_pages(); ?><br />
 ID : <?php the_ID();?><br />
 Category : <?php the_category( $separator, $parents, $post_id ); ?> <br />
 Category Description : <?php category_description();?><br />
 Tags : <?php the_tags();?><br />
 Meta : <?php the_meta();?><br />
 Author : <?php the_author_posts_link(); ?> <?php //echo get_the_modified_author(); ?> : <?php //the_author(); ?>: <?php //echo get_the_author_posts(); ?><br />
 Last modified: <?php the_modified_date('F j, Y'); ?><br />
 Created on : <?php echo get_the_date( 'Y-m-d' ); ?><br />
 Published time : <?php the_time( 'H:i:s' ); ?><br />
        </div>
      </article>
    <?php endwhile; ?>
    <!-- end of the loop -->

    <!-- pagination here -->
    <?php
      if (function_exists(custom_pagination)) {
        custom_pagination($custom_query->max_num_pages,"",$paged);
      }
    ?>
<?php wp_reset_postdata(); ?>
<?php else:  ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

<?php
get_footer();
?>


3) Create one page on backend side and select template "Custom category page".

Thats it.

Create post programatically and assigned category to posts (If category & Posts not exists it will create and assign to that posts).


$new_post = array(
'post_name' => sanitize_title($data['Handle']), // Slug
'post_title' => convert_chars($data['Title']),
'post_content' => wpautop(convert_chars($data['Body (HTML)'])),
'post_status' => 'publish',
'post_type' => 'post',
//'post_category' => array($new_cat_ID)
);

if($id = post_exists($new_post['post_title'], $new_post['post_content']))
{
$new_post['ID'] = (int)$id;
$id = wp_update_post($new_post);
if ( is_wp_error( $id ) )
{
return $id;
}
if (!$id)
{
$output .= "Couldn't get post ID";
return;
}

foreach($data as $key => $value)
{
update_post_meta($id, sanitize_user('Shopify '.$key), esc_attr($value));
}
$output .= 'Updated !'. ' <a href="'.get_permalink($id).'">View '.$data['Title'].'</a>';
}
else
{
$id = wp_insert_post($new_post);
}

$arrCategories = explode(',', $data['Categories']);
if(count($arrCategories) > 0)
{
global $wpdb;
foreach($arrCategories as $key => $category_name)
{
$slug = strtolower( str_ireplace( ' ', '-', $category_name ) );
$sqlTermQuery = "SELECT * FROM wp_terms WHERE slug = '".$slug."'";
$arrTermsArray = $wpdb->get_results($sqlTermQuery);
if(count($arrTermsArray) <= 0)
{
$sqlInsertTerm = "INSERT INTO wp_terms SET name = '".ucfirst($category_name)."',slug = '".$slug."'";
$wpdb->query($sqlInsertTerm);
$lastid = $wpdb->insert_id;
$sqlInsertTermTexonomy = "INSERT INTO wp_term_taxonomy SET term_id = '".$lastid."',taxonomy = 'category'";
$arrTexonomy[] = $wpdb->get_results($sqlInsertTermTexonomy);
$lasttexonomyid = $wpdb->insert_id;
$arrCategories_ids[] = $lastid;
}
else
{
$sqlTermQuery = "SELECT * FROM wp_terms WHERE slug = '".$slug."'";
$arrTermsArray = $wpdb->get_results($sqlTermQuery);
$intTermid = $arrTermsArray[0]->term_id;

$sqlTexonomy = "SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id = '".$intTermid."' AND taxonomy = 'download_category'";
$arrTaxonomy = $wpdb->get_results($sqlTexonomy);
if(count($arrTaxonomy) > 0)
{
$lasttexonomyid = $arrTaxonomy[0]->term_taxonomy_id;
}
else
{
$sqlInsertTermTexonomy = "INSERT INTO wp_term_taxonomy SET term_id = '".$intTermid."',taxonomy = 'download_category'";
$arrTexonomy[] = $wpdb->get_results($sqlInsertTermTexonomy);
$lasttexonomyid = $wpdb->insert_id;
}
}

if($lasttexonomyid >0 && $id > 0)
{
$sqlInsertTerm = "INSERT INTO wp_term_relationships SET object_id = '".$id."',term_taxonomy_id = '".$lasttexonomyid."'";
$wpdb->query($sqlInsertTerm);
}
}
}