{"id":9624,"date":"2025-08-01T00:01:21","date_gmt":"2025-07-31T18:31:21","guid":{"rendered":"https:\/\/weblizar.com\/blog\/?p=9624"},"modified":"2025-08-01T12:38:16","modified_gmt":"2025-08-01T07:08:16","slug":"develop-custom-page-excerpt-plugin-for-wordpress","status":"publish","type":"post","link":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/","title":{"rendered":"How to Develop a Custom Page Excerpt Plugin for WordPress?"},"content":{"rendered":"<h2><strong>Custom Page Excerpt Plugin &#8211;<\/strong><\/h2>\n<p>It\u2019s easy to show lists of posts in\u00a0<strong>WordPress<\/strong>. Your theme\u2019s index.php file is probably handling all your categories, authors and search requests. However, sometimes you need a little more control. Perhaps you have multiple product pages but only want to feature two or three on your home page without manually re-entering the details.<span id=\"more-43\"><\/span><\/p>\n<p>In this tutorial, we\u2019ll develop a small WordPress plugin which replaces a [<strong>shortcode<\/strong>] with a link to a specific page or post. The link will show the title, thumbnail, and excerpt, but you can configure it to show whichever details you require.<\/p>\n<p>Create a new file named\u00a0<strong>showexcerptlink.php<\/strong>\u00a0in your plugins folder (wp-content\/plugins) and add a header so it can be identified by WordPress:<\/p>\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\">2<\/div>\n<div class=\"crayon-num\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\">4<\/div>\n<div class=\"crayon-num\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\">6<\/div>\n<div class=\"crayon-num\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\">8<\/div>\n<div class=\"crayon-num\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\">10<\/div>\n<div class=\"crayon-num\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\">12<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5c112d775e7b6343951488-1\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">&lt;?<\/span><span class=\"crayon-v\">php<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-3\" class=\"crayon-line\"><span class=\"crayon-c\">\/*<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">Plugin Name: Show Page\/Post Excerpt<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-5\" class=\"crayon-line\"><span class=\"crayon-c\">Plugin URI: https:\/\/www.weblizar.com\/<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">Description: Replaces a shortcode with a link to a specific page or post<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-7\" class=\"crayon-line\"><span class=\"crayon-c\">Version: 1.0<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">Author: Weblizar<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-9\" class=\"crayon-line\"><span class=\"crayon-c\">Author URI:\u00a0https:\/\/www.weblizar.com\/<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">License: Use this how you like!<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-11\" class=\"crayon-line\"><span class=\"crayon-c\">*\/<\/span><\/div>\n<div id=\"crayon-5c112d775e7b6343951488-12\" class=\"crayon-line crayon-striped-line\"><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This is followed by our primary function, ShowExcerptLink(). We require one parameter: the slug\/permalink name. While we could pass the ID, the slug is a better option because it\u2019s less likely to change while you\u2019re editing pages. You could add further parameters to control the HTML output.<\/p>\n<h2>Code &#8211;<\/h2>\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row alt\">\n<td class=\"crayon-nums \">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\">2<\/div>\n<div class=\"crayon-num\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\">4<\/div>\n<div class=\"crayon-num\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\">6<\/div>\n<div class=\"crayon-num\">7<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5c112d775e7bc180425511-1\" class=\"crayon-line\"><span class=\"crayon-t\">function<\/span> <span class=\"crayon-e\">ShowExcerptLink<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">params<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\">array<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-5c112d775e7bc180425511-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">extract<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">shortcode_atts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-t\">array<\/span><span class=\"crayon-sy\">(<\/span><\/div>\n<div id=\"crayon-5c112d775e7bc180425511-3\" class=\"crayon-line\"><span class=\"crayon-s\">&#8216;slug&#8217;<\/span> <span class=\"crayon-o\">=&amp;<\/span><span class=\"crayon-v\">gt<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-s\">&#8221;<\/span><\/div>\n<div id=\"crayon-5c112d775e7bc180425511-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">params<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7bc180425511-5\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">html<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8221;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7bc180425511-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">slug<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-s\">&#8221;<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-st\">return<\/span> <span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">html<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7bc180425511-7\" class=\"crayon-line\"><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>We can now look up the page or post using the WordPress WP_Query object. The following code attempts to find the page slug but, if that doesn\u2019t exist, it looks for a post slug instead:<\/p>\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\">2<\/div>\n<div class=\"crayon-num\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\">4<\/div>\n<div class=\"crayon-num\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\">6<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5c112d775e7bf637980604-1\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-5c112d775e7bf637980604-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">q<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-r\">new<\/span> <span class=\"crayon-e\">WP_Query<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;pagename=$slug&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7bf637980604-3\" class=\"crayon-line\"><span class=\"crayon-st\">if<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">q<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">gt<\/span><span class=\"crayon-sy\">;<\/span><span class=\"crayon-e\">have_posts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-5c112d775e7bf637980604-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">q<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-r\">new<\/span> <span class=\"crayon-e\">WP_Query<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;name=$slug&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7bf637980604-5\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-5c112d775e7bf637980604-6\" class=\"crayon-line crayon-striped-line\"><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>We can now start a <a href=\"https:\/\/weblizar.com\/blog\/yoast-seo-in-wordpress\/\">WordPress<\/a> loop \u2014 although it\u2019ll only have zero or one post:<\/p>\n<div id=\"crayon-5c112d775e7c1181900519-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/ the loop<\/span><\/div>\n<div id=\"crayon-5c112d775e7c1181900519-3\" class=\"crayon-line\"><span class=\"crayon-st\">while<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">q<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">gt<\/span><span class=\"crayon-sy\">;<\/span><span class=\"crayon-e\">have_posts<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-5c112d775e7c1181900519-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">q<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-o\">&amp;<\/span><span class=\"crayon-v\">gt<\/span><span class=\"crayon-sy\">;<\/span><span class=\"crayon-e\">the_post<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div><\/div>\n<div id=\"crayon-5c112d775e7c1181900519-5\" class=\"crayon-line\"><\/div>\n<div>The HTML output is now generated in the $html string. You can use any standard function that you\u2019d normally find in a WordPress loop. In this example, we\u2019ll output the title (H2), thumbnail, an excerpt:<\/div>\n<div>\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\">2<\/div>\n<div class=\"crayon-num\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\">4<\/div>\n<div class=\"crayon-num\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\">6<\/div>\n<div class=\"crayon-num\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\">8<\/div>\n<div class=\"crayon-num\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\">10<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5c112d775e7c3768561951-1\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/ generate HTML<\/span><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-3\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">link<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8216;&amp;lt;a href=&#8221;&#8216;<\/span> <span class=\"crayon-sy\">.<\/span> <span class=\"crayon-e\">get_permalink<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">.<\/span> <span class=\"crayon-s\">&#8216;&amp;gt;&#8217;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">$<\/span><span class=\"crayon-i\">html<\/span> <span class=\"crayon-sy\">.<\/span><span class=\"crayon-o\">=<\/span><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-5\" class=\"crayon-line\"><span class=\"crayon-s\">&#8216;&amp;lt;h2&amp;gt;&#8217;<\/span> <span class=\"crayon-sy\">.<\/span> <span class=\"crayon-sy\">$<\/span><span class=\"crayon-i\">link<\/span> <span class=\"crayon-sy\">.<\/span> <span class=\"crayon-e\">the_title<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-s\">&#8221;<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-t\">false<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">.<\/span> <span class=\"crayon-s\">&#8220;&amp;lt;\/a&amp;gt;&amp;lt;\/h2&amp;gt;\\n&#8221;<\/span> <span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">has_post_thumbnail<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">?<\/span><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-7\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span><span class=\"crayon-i\">link<\/span> <span class=\"crayon-sy\">.<\/span> <span class=\"crayon-e\">get_the_post_thumbnail<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">.<\/span> <span class=\"crayon-s\">&#8216;&amp;lt;\/a&amp;gt;&#8217;<\/span> <span class=\"crayon-o\">:<\/span> <span class=\"crayon-s\">&#8221;<\/span><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-9\" class=\"crayon-line\"><span class=\"crayon-e\">get_the_excerpt<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7c3768561951-10\" class=\"crayon-line crayon-striped-line\"><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em>(This code is valid in any version of HTML although HTML5 would permit the anchor around the<br \/>\nwhole block.)<\/em><\/p>\n<p>We can now end the loop, return the <a href=\"https:\/\/weblizar.com\/blog\/5-best-practices-to-design-an-e-commerce-checkout-page\/\">HTML<\/a> string and complete the function:<\/p>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row alt\">\n<td class=\"crayon-nums \">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\">2<\/div>\n<div class=\"crayon-num\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\">4<\/div>\n<div class=\"crayon-num\">5<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5c112d775e7c6776789865-1\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-5c112d775e7c6776789865-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-5c112d775e7c6776789865-3\" class=\"crayon-line\"><span class=\"crayon-st\">return<\/span> <span class=\"crayon-sy\">$<\/span><span class=\"crayon-v\">html<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7c6776789865-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-5c112d775e7c6776789865-5\" class=\"crayon-line\"><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Finally, we\u2019ll register our function as a shortcode handler:<\/p>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\">2<\/div>\n<div class=\"crayon-num\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\">4<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5c112d775e7c8730354608-1\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-5c112d775e7c8730354608-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-c\">\/\/ register shortcode<\/span><\/div>\n<div id=\"crayon-5c112d775e7c8730354608-3\" class=\"crayon-line\"><span class=\"crayon-e\">add_shortcode<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;showexcerptlink&#8217;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">&#8216;ShowExcerptLink&#8217;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5c112d775e7c8730354608-4\" class=\"crayon-line crayon-striped-line\"><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Save the file and activate the plugin in your WordPress control panel.<\/p>\n<h2 class=\"fittexted_for_content_h2\">Showing an Excerpt<\/h2>\n<p>The following shortcode can now be added to the content of any page or post:<\/p>\n<div id=\"crayon-5c112d775e7ca685149195\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\">\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row alt\">\n<td class=\"crayon-nums \">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\">2<\/div>\n<div class=\"crayon-num\">3<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5c112d775e7ca685149195-1\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-5c112d775e7ca685149195-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">showexcerptlink <\/span><span class=\"crayon-v\">slug<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-v\">page<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">post<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">slug<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">name<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-5c112d775e7ca685149195-3\" class=\"crayon-line\"><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>If you\u2019re referencing a page which has one or more parent pages, the slugs must be separated by a forward slash, e.g.<\/p>\n<div id=\"crayon-5c112d775e7cc427925741\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\">\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\">2<\/div>\n<div class=\"crayon-num\">3<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5c112d775e7cc427925741-1\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-5c112d775e7cc427925741-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">showexcerptlink <\/span><span class=\"crayon-v\">slug<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-v\">grand<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-r\">parent<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">slug<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-r\">parent<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">slug<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">page<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">slug<\/span><span class=\"crayon-sy\">]<\/span><\/div>\n<div id=\"crayon-5c112d775e7cc427925741-3\" class=\"crayon-line\"><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div><\/div>\n<div class=\"fb-comments fb_iframe_widget fb_iframe_widget_fluid_desktop\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Custom Page Excerpt Plugin &#8211; It\u2019s easy to show lists of posts in\u00a0WordPress. Your theme\u2019s index.php file is probably handling all your categories, authors and search requests. However, sometimes you need a little more control. Perhaps you have multiple product pages but only want to feature two or three on your home page without manually<\/p>\n","protected":false},"author":8,"featured_media":9637,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[6],"tags":[1803,1802,1804],"class_list":["post-9624","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plugins","tag-custom-page","tag-custom-page-excerpt-plugin","tag-excerpt-plugin"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Develop a Custom Page Excerpt Plugin for WordPress? - Weblizar Blog<\/title>\n<meta name=\"description\" content=\"It\u2019s easy to show lists of posts in\u00a0WordPress. Your theme\u2019s index.php file is probably handling all your categories, authors. custom page excerpt plugin\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Develop a Custom Page Excerpt Plugin for WordPress? - Weblizar Blog\" \/>\n<meta property=\"og:description\" content=\"It\u2019s easy to show lists of posts in\u00a0WordPress. Your theme\u2019s index.php file is probably handling all your categories, authors. custom page excerpt plugin\" \/>\n<meta property=\"og:url\" content=\"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Weblizar Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/weblizarwp\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-31T18:31:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-01T07:08:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/weblizar.com\/blog\/wp-content\/uploads\/2019\/01\/How-to-Develop-a-Custom-Page-Excerpt-Plugin-for-WordPress.jpg?fit=900%2C563&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"563\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"tarun sharma\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@weblizar\" \/>\n<meta name=\"twitter:site\" content=\"@weblizar\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"tarun sharma\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Develop a Custom Page Excerpt Plugin for WordPress? - Weblizar Blog","description":"It\u2019s easy to show lists of posts in\u00a0WordPress. Your theme\u2019s index.php file is probably handling all your categories, authors. custom page excerpt plugin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/","og_locale":"en_US","og_type":"article","og_title":"How to Develop a Custom Page Excerpt Plugin for WordPress? - Weblizar Blog","og_description":"It\u2019s easy to show lists of posts in\u00a0WordPress. Your theme\u2019s index.php file is probably handling all your categories, authors. custom page excerpt plugin","og_url":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/","og_site_name":"Weblizar Blog","article_publisher":"http:\/\/www.facebook.com\/weblizarwp","article_published_time":"2025-07-31T18:31:21+00:00","article_modified_time":"2025-08-01T07:08:16+00:00","og_image":[{"width":900,"height":563,"url":"https:\/\/i0.wp.com\/weblizar.com\/blog\/wp-content\/uploads\/2019\/01\/How-to-Develop-a-Custom-Page-Excerpt-Plugin-for-WordPress.jpg?fit=900%2C563&ssl=1","type":"image\/jpeg"}],"author":"tarun sharma","twitter_card":"summary_large_image","twitter_creator":"@weblizar","twitter_site":"@weblizar","twitter_misc":{"Written by":"tarun sharma","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/#article","isPartOf":{"@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/"},"author":{"name":"tarun sharma","@id":"https:\/\/weblizar.com\/blog\/#\/schema\/person\/71631f37679a8ea30cb7a2e295e69fe2"},"headline":"How to Develop a Custom Page Excerpt Plugin for WordPress?","datePublished":"2025-07-31T18:31:21+00:00","dateModified":"2025-08-01T07:08:16+00:00","mainEntityOfPage":{"@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/"},"wordCount":551,"commentCount":0,"image":{"@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/weblizar.com\/blog\/wp-content\/uploads\/2019\/01\/How-to-Develop-a-Custom-Page-Excerpt-Plugin-for-WordPress.jpg","keywords":["Custom Page","Custom Page Excerpt Plugin","Excerpt Plugin"],"articleSection":["Plugins"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/","url":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/","name":"How to Develop a Custom Page Excerpt Plugin for WordPress? - Weblizar Blog","isPartOf":{"@id":"https:\/\/weblizar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/weblizar.com\/blog\/wp-content\/uploads\/2019\/01\/How-to-Develop-a-Custom-Page-Excerpt-Plugin-for-WordPress.jpg","datePublished":"2025-07-31T18:31:21+00:00","dateModified":"2025-08-01T07:08:16+00:00","author":{"@id":"https:\/\/weblizar.com\/blog\/#\/schema\/person\/71631f37679a8ea30cb7a2e295e69fe2"},"description":"It\u2019s easy to show lists of posts in\u00a0WordPress. Your theme\u2019s index.php file is probably handling all your categories, authors. custom page excerpt plugin","breadcrumb":{"@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/#primaryimage","url":"https:\/\/weblizar.com\/blog\/wp-content\/uploads\/2019\/01\/How-to-Develop-a-Custom-Page-Excerpt-Plugin-for-WordPress.jpg","contentUrl":"https:\/\/weblizar.com\/blog\/wp-content\/uploads\/2019\/01\/How-to-Develop-a-Custom-Page-Excerpt-Plugin-for-WordPress.jpg","width":900,"height":563,"caption":"custom page excerpt plugin"},{"@type":"BreadcrumbList","@id":"https:\/\/weblizar.com\/blog\/develop-custom-page-excerpt-plugin-for-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/weblizar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Develop a Custom Page Excerpt Plugin for WordPress?"}]},{"@type":"WebSite","@id":"https:\/\/weblizar.com\/blog\/#website","url":"https:\/\/weblizar.com\/blog\/","name":"Weblizar Blog","description":"Update yourself with all the latest tech news revolving around wordpress all at one place","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/weblizar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/weblizar.com\/blog\/#\/schema\/person\/71631f37679a8ea30cb7a2e295e69fe2","name":"tarun sharma","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/026a42b8cec5a7d671fb97d2b66dad482246e2825405e2234ec50611ecda0c69?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/026a42b8cec5a7d671fb97d2b66dad482246e2825405e2234ec50611ecda0c69?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/026a42b8cec5a7d671fb97d2b66dad482246e2825405e2234ec50611ecda0c69?s=96&d=mm&r=g","caption":"tarun sharma"}}]}},"_links":{"self":[{"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/posts\/9624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/comments?post=9624"}],"version-history":[{"count":0,"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/posts\/9624\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/media\/9637"}],"wp:attachment":[{"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/media?parent=9624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/categories?post=9624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/weblizar.com\/blog\/wp-json\/wp\/v2\/tags?post=9624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}