Viewing 3 replies - 1 through 3 (of 3 total)
  • Hi @panhwerwaseem121 thanks for your topic!

    It actually looks like you are using this other plugin for AMP. So if the issue occurs currently, then it’s best to post an inquiry in their support forums.

    However, if the issue occurs with our plugin, please share a URL with the issue and the plugin activated. We’d gladly take a look.

    Thread Starter panhwerwaseem121

    (@panhwerwaseem121)

    @reneesoffice we are using your plugin let me send you one screenshot: https://snipboard.io/wrtGDd.jpg also every-page have your plugin is activated let me tell you one more thing:
    that those post redirecting to non-amp version are child post like:
    Parent Post: https://www.vpnranks.com/reviews/vyprvpn/
    Child Post: https://www.vpnranks.com/reviews/vyprvpn/kodi/
    Parent post AMP version working fine but child post amp redirecting to non-amp i am sending you code which i use to create this custom posts hierarchy.

    add_action('registered_post_type', 'make_posts_hierarchical', 10, 2 );
    
    // Runs after each post type is registered
    function make_posts_hierarchical($post_type, $pto){
    
        // Return, if not post type posts
        if ($post_type != 'post') return;
    
        // access $wp_post_types global variable
        global $wp_post_types;
    
        // Set post type "post" to be hierarchical
        $wp_post_types['post']->hierarchical = 1;
    
        // Add page attributes to post backend
        // This adds the box to set up parent and menu order on edit posts.
        add_post_type_support( 'post', 'page-attributes' );
    
    }
    
    /**
     * Get parent post slug
     *
     * Helpful function to get the post name of a posts parent
     */
    function get_parent_post_slug($post) {
        if (!is_object($post) || !$post->post_parent) {
            return false;
        }
    
        return get_post($post->post_parent)->post_name;
    }
    
    /**
     *
     * Edit View of Permalink
     *
     * This affects editing permalinks, and $permalink is an array [template, replacement]
     * where replacement is the post_name and template has %postname% in it.
     *
     **/
    add_filter('get_sample_permalink', function($permalink, $post_id, $title, $name, $post) {
        if ($post->post_type != 'post' || !$post->post_parent) {
            return $permalink;
        }
    
        // Deconstruct the permalink parts
        $template_permalink = current($permalink);
        $replacement_permalink = next($permalink);
    
        // Find string
        if(!is_amp_endpoint()) {
            $postname_string = '/%postname%/';
        }else{
            $postname_string = '/%postname%/amp/';
        }
    
        // Get parent post
        $parent_slug = get_parent_post_slug($post);
    
        $altered_template_with_parent_slug = '/' . $parent_slug . $postname_string;
        $new_template = str_replace($postname_string, $altered_template_with_parent_slug, $template_permalink);
    
        $new_permalink = [$new_template, $replacement_permalink];
    
        return $new_permalink;
    }, 99, 5);
    
    /**
     * Alter the link to the post
     *
     * This affects get_permalink, the_permalink etc.
     * This will be the target of the edit permalink link too.
     *
     * Note: only fires on "post" post types.
     */
    add_filter('post_link', function($post_link, $post, $leavename){
    
        if ($post->post_type != 'post' || !$post->post_parent) {
            return $post_link;
        }
    
        $parent_slug = get_parent_post_slug($post);
        $new_post_link = str_replace($post->post_name, $parent_slug . '/' . $post->post_name, $post_link);
    
        return $new_post_link;
    }, 99, 3);
    
    /**
     * Before getting posts
     *
     * Has to do with routing... adjusts the main query settings
     *
     */
    add_action('pre_get_posts', function($query){
        global $wpdb, $wp_query;
    
        $original_query = $query;
        $uri = $_SERVER['REQUEST_URI'];
    
        // Do not do this post check all the time
        if ( $query->is_main_query() && !is_admin()) {
    
            // get the post_name
            $basename = basename($uri);
            // find out if we have a post that matches this post_name
            $test_query = sprintf("select * from $wpdb->posts where post_type = '%s' and post_name = '%s';", 'post', $basename);
            $result = $wpdb->get_results($test_query);
    
            // if no match, return default query, or if there's no parent post, this is not necessary
            if (!($post = current($result)) || !$post->post_parent) {
                return $original_query;
            }
    
            // get the parent slug
            $parent_slug = get_parent_post_slug($post);
            // concat the parent slug with the post_name to get most of the url
            $hierarchal_slug = $parent_slug . '/' . $post->post_name;
    
            // if the concat of parent-slug/post-name is not in the uri, this is not the right post.
            if (!stristr($uri, $hierarchal_slug)) {
                return $original_query;
            }
    
            // pretty high confidence that we need to override the query.
            $query->query_vars['post_type'] = ['post'];
            $query->is_home     = false;
            $query->is_page     = true;
            $query->is_single   = true;
            $query->queried_object_id = $post->ID;
            $query->set('page_id', $post->ID);
    
            return $query;
        }
    
    }, 1);
    

    this file added in function.php, i think because of child permalink that amp redirect to non-amp can you help us with this???

    Plugin Author Weston Ruter

    (@westonruter)

    Forcing hierarchical AMP URLs to end in /amp/ is not supported.

    In legacy AMP reader mode, /amp/ is only used for certain non-hierarchical post types in certain scenarios, but in the next version of the plugin we are going to default to ?amp=1 instead for all modes (Standard, Transitional, Reader). Nevertheless, we will provide a way for you to filter in order to customize how the AMPs are constructed, but you’ll also have to do the necessary work to ensure the rewrite rules are constructed to properly identify requests as being for AMP. For more, see https://github.com/ampproject/amp-wp/issues/2204

    But that will be up to you to implement, and it’s not something we provide guidance for. So we likewise cannot assist with the current rewrite rule customizations you are doing.

    Our recommendation is to only use ?amp=1 to identify AMP URLs. It can be added to any URL regardless of post type or other non-singular requests. It also makes no difference from a search indexing perspective. What matters is your canonical URLs and that on the canonical pages that there is an amphtml link. It makes no difference whether such a link points to .../amp/ or ...?amp=1.

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Referenced AMP URL is not an AMP’ is closed to new replies.