খালি অনুসন্ধানে হোম পেজে ফিরে আসে, কীভাবে খুঁজে পাওয়া যায় না অনুসন্ধান পৃষ্ঠায়?


16

ডিফল্ট অনুসন্ধান ফাংশনটি যদি অনুসন্ধানের ফর্মটি খালি থাকে তবে হোম পৃষ্ঠাটি ফিরে আসে, আমি এটিতে চাই "দুঃখিত আপনার অনুসন্ধানের কোনও ফল দেয়নি" পৃষ্ঠাটি ফিরিয়ে দিন।

এই পোস্টে এটি উত্তর দেয় না

এবং এই টিকিটটি আমাকে বলে যে এটি সেইভাবে কাজ করার কথা! একটি .htaccess পুনঃনির্দেশ ব্যবহার ছাড়াও কীভাবে এটি পরিবর্তন করা যায় তা কেও বুঝতে পারে?

আমি নিম্নলিখিত সার্চ.এফপিপি ফাইলটি ব্যবহার করছি: `

        <div id="content" class="clearfix">

            <div id="main" class="col700 left clearfix" role="main">

                <h1 class="archive_title"><span>Search Results for:</span> <?php echo esc_attr(get_search_query()); ?></h1>

                <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

                <article id="post-<?php the_ID(); ?>" <?php post_class('clearfix'); ?>>

                    <header>

                        <h3><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>

                        <p class="meta"><?php _e("Posted", "bonestheme"); ?> <time datetime="<?php echo the_time('Y-m-j'); ?>" pubdate><?php the_time('F jS, Y'); ?></time> <?php _e("by", "bonestheme"); ?> <?php the_author_posts_link(); ?> <span class="amp">&</span> <?php _e("filed under", "bonestheme"); ?> <?php the_category(', '); ?>.</p>

                    </header> <!-- end article header -->

                    <section class="post_content">
                        <?php the_excerpt('<span class="read-more">Read more on "'.the_title('', '', false).'" &raquo;</span>'); ?>

                    </section> <!-- end article section -->

                    <footer>


                    </footer> <!-- end article footer -->

                </article> <!-- end article -->

                <?php endwhile; ?>  

                <?php if (function_exists('page_navi')) { // if expirimental feature is active ?>

                    <?php page_navi(); // use the page navi function ?>

                <?php } else { // if it is disabled, display regular wp prev & next links ?>
                    <nav class="wp-prev-next">
                        <ul class="clearfix">
                            <li class="prev-link"><?php next_posts_link(_e('&laquo; Older Entries', "bonestheme")) ?></li>
                            <li class="next-link"><?php previous_posts_link(_e('Newer Entries &raquo;', "bonestheme")) ?></li>
                        </ul>
                    </nav>
                <?php } ?>          

                <?php else : ?>

                <!-- this area shows up if there are no results -->

                <article id="post-not-found">
                    <header>
                        <h1>No Results Found</h1>
                    </header>
                    <section class="post_content">
                        <p>Sorry, but the requested resource was not found on this site.</p>
                    </section>
                    <footer>
                    </footer>
                </article>

                <?php endif; ?>

            </div> <!-- end #main -->

            <div id="sidebar1" class="sidebar right col220">

                <?php get_search_form(); ?>



            </div>

        </div> <!-- end #content -->

`


কিছু কোড দেখান?
কাইজার

আমি জানি না কোথায় এটি (htaccess ছাড়াও) সম্বোধন করা শুরু করবে, সুতরাং কোনও কোড নেই। কোনও সহায়তা প্রশংসা করা হয়
ড্রি

আপনার সার্চফর্ম.এফপি এবং সার্চ.এফপি কোড সম্পর্কে কীভাবে?
কায়সার

আমি হাড়ের থিমটি ব্যবহার করছি যা একটি অনুসন্ধান.এফপি আছে তবে মূল অনুসন্ধানের ব্যবহার করে
ড্রি

2
এটি একটি সাধারণ ওয়ার্ডপ্রেস ইস্যু, থিম নির্দিষ্ট সমস্যা নয়
টম জে নওয়েল

উত্তর:


18

এখানে এটি ঠিক করার 3 টি উপায় রয়েছে, আমি আপনাকে সমাধান 2 ব্যবহার করার পরামর্শ দিচ্ছি, তবে পরিস্থিতিটিকে প্রথম স্থানে এড়াতে হিসাবে 1 সমাধানে jQuery এ মনোযোগ দিন।

প্রশ্নকারীদের থিম থেকে আরও কোড পোস্ট করা ব্যক্তিদের জন্য, এটি কোনও থিম সমস্যা নয়, এটি একটি সাধারণ ওয়ার্ডপ্রেস ইস্যু যা সমস্ত ওয়ার্ডপ্রেস সাইটগুলিকে প্রভাবিত করে।

সমাধান 1

এটি এখানে কীভাবে ঠিক করতে হয় তার গভীরতার একটি টিউটোরিয়াল আপনি খুঁজে পেতে পারেন:

http://wpengineer.com/2162/fix-empty-searches/

আজ, আসুন এমন কোনও কিছু দেখি, যা বেশিরভাগ পেশাদার কখনও দেখেনি: খালি অনুসন্ধান। আপনি একটি অনুসন্ধান ইনপুট ক্ষেত্র অফার করেন এবং কেউ কোনও শব্দ প্রবেশ না করেই অনিচ্ছাকৃতভাবে জমা দেওয়ার বোতামটি হিট করে। ফলাফলযুক্ত ইউআরআই এর মত দেখাচ্ছে: উদাহরণ.com/?s=। এটি আপনার প্রথম পৃষ্ঠার মতো একই সামগ্রী দেখায় shows আসলে, এটি প্রথম পৃষ্ঠা।

কারও দরকার নেই।

সমাধান 2 (প্রস্তাবিত)

স্পিজিটর্গের মাধ্যমে ফ্রমা পোস্টটি নেওয়া হয়েছে http://wordpress.org/support/topic/blank-search-sends-you-to-the- homepage

আরেকটি বিকল্প হ'ল একটি অনুরোধ ফিল্টার যুক্ত করুন:

add_filter( 'request', 'my_request_filter' );
function my_request_filter( $query_vars ) {
    if( isset( $_GET['s'] ) && empty( $_GET['s'] ) ) {
        $query_vars['s'] = " ";
    }
    return $query_vars;
}

তারপরে আপনি যদি নিজের অনুসন্ধান ফর্মটিতে অনুসন্ধানের ক্যোয়ারীটিকে পুনরায় ব্যবহার করছেন তবে এটি ট্রিম করতে ভুলবেন না যাতে আপনার এক বা একাধিক স্পেস শেষ হয় না (কেবল জিনিস পরিষ্কার রাখতে, সম্ভবত ফলাফলগুলিকে প্রভাবিত করে না।

<input type="text" name="s" id="s" value="<?php echo trim( get_search_query() ); ?>"/>

আশা করি এটি সহায়তা করে, মনে হয় এটি আমার সাইটে এতদূর কাজ করছে এবং ডাব্লুপি কোডগুলি আপগ্রেডগুলি সহজতর করে কোনও পরিবর্তন করার সাথে জড়িত না।

সমাধান 3

http://www.warpconduit.net/2011/08/02/fix-redirection-and-error-page-on-empty-wordpress-search/

সমাধান 2 এর মতো তবে ব্যাপক এবং সামান্য পৃথক নয়।

if(!is_admin()){
    add_action('init', 'search_query_fix');
    function search_query_fix(){
        if(isset($_GET['s']) && $_GET['s']==''){
            $_GET['s']=' ';
        }
    }
}

1
সমাধান 2 এর সমস্যাটি হ'ল এটি প্রতিটি পোস্ট (বা কমপক্ষে প্রতিটি পোস্টে একটি স্পেস সহ) ফিরিয়ে দেবে যখন সত্যিকার অর্থে কোনও পোস্ট ফেরত দেওয়া উচিত নয়।
ফেলিক্স ইভ

2

একটি পৃষ্ঠা অনুসন্ধান.এফপি তৈরি করুন এবং এই কোডটি পেস্ট করুন এবং "get_template_part ('লুপ', 'অনুসন্ধান') দিয়ে আপনার লুপটি পরিবর্তন করুন;

                    <div id="container">
                        <div id="content" role="main">

            <?php if ( have_posts() ) : ?>
                            <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'mb' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
                            <?php
                            /* Run the loop for the search to output the results.
                             * If you want to overload this in a child theme then include a file
                             * called loop-search.php and that will be used instead.
                             */
                             get_template_part( 'loop', 'search' );
                            ?>
            <?php else : ?>
                            <div id="post-0" class="post no-results not-found">
                                <h2 class="entry-title"><?php _e( 'Nothing Found', 'mb' ); ?></h2>
                                <div class="entry-content">
                                    <p><?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyten' ); ?></p>
                                    <?php get_search_form(); ?>
                                </div><!-- .entry-content -->
                            </div><!-- #post-0 -->
            <?php endif; ?>
                        </div><!-- #content -->
                    </div><!-- #container -->

            <?php get_sidebar(); ?>
            <?php get_footer(); ?>

2

টম এর সমাধান 2 উপর বিল্ডিং করা কিন্তু কোনও পোস্ট ফেরত না পেয়ে তা নিশ্চিত করে আগের মতো একটি অনুরোধ ফিল্টার যুক্ত করুন:

add_filter( 'request', 'my_request_filter' );
function my_request_filter( $query_vars ) {
    if( isset( $_GET['s'] ) && empty( $_GET['s'] ) ) {
        $query_vars['s'] = " ";
        global $no_search_results;
        $no_search_results = TRUE;
    }
    return $query_vars;
}

তবে এবার কোনও অনুসন্ধানের ফলাফল ফেরত দেওয়া উচিত নয় বলে বিশ্বব্যাপী পরিবর্তনশীল সেট করুন। তারপরে কোনও পোস্ট_সেইক হুক ব্যবহার করে নিশ্চিত করুন যে কোনও পোস্ট ফেরত আসেনি:

add_filter( 'posts_where' , 'posts_where_statement' ); 
function posts_where_statement( $where ) {
    global $no_search_results;
    if($no_search_results) {
        $where .= ' AND 1=0';
    }
    return $where;
}

1

অনুসন্ধান ক্যোয়ারী ফাঁকা আছে কিনা তা পরীক্ষা করুন ( get_search_query () ), কেবল প্রথম আইএফ এর মাধ্যমে প্রতিস্থাপন করুন:

<?php if (have_posts() && get_search_query()) : while (have_posts()) : the_post(); ?>

আমি মনে করি এটি যথেষ্ট ন্যায্য সমাধান is সহজ এবং পরিষ্কার। কোড জটিল করতে পারে এমন কোনও বিশেষ ফিল্টার এবং ক্রিয়াকলাপ নেই
কামিল

0

আমি নিম্নলিখিত হিসাবে আমার থিমগুলিতে এটি পরিচালনা করি। এই কোডটি ব্যবহার করে দেখুন:

<?php if (!have_posts()): ?>
    <article id="post-0">
        <header>
            <h3>No posts found.</h3>
        </header> <!-- end article header -->

        <section class="post_content">
           Sorry, we found 0 posts for your search, Please try searching again.
        </section> <!-- end article section -->

        <footer>
        </footer> <!-- end article footer -->

    </article> <!-- end article -->
<?php endif; ?>

আমরা যদি (! Have_posts ()) শর্তটি পরিচালনা করছি। আপনার (h_posts) শুরু হওয়ার আগে, আপনার h3. আর্কাইভ শিরোনামের পরে এটি ঠিক রেখে দিন। আপনি সামগ্রীর ক্ষেত্রে অনুসন্ধান ফর্ম ফাংশনটিকেও কল করতে পারেন।


0

আমিও একই সমস্যার মুখোমুখি হয়েছি, এটি ওয়ার্ডপ্রেস দ্বারা প্রদত্ত ডিফল্ট।

তবে ভাগ্যক্রমে আমি এমন কিছু পেয়েছি যা আমাকে সাহায্য করেছিল।

"ফাংশন.এফপি" এর নীচে যুক্ত করুন

 function SearchFilter($query) {
    // If 's' request variable is set but empty
    if (isset($_GET['s']) && empty($_GET['s']) && $query->is_main_query()){
        $query->is_search = true;
        $query->is_home = false;
    }
    return $query;}
add_filter('pre_get_posts','SearchFilter');

এবং তারপরে সন্ধান.এফপিতে রেখার নীচে (15 নং লাইনের) প্রতিস্থাপন করুন

<?php if ( have_posts() && strlen( trim(get_search_query()) ) != 0 ) : ?>

হতে পারে এটি আপনাকেও সহায়তা করবে

বিশদগুলির জন্য এটি পড়ুন: খালি অনুসন্ধান ওয়ার্ডপ্রেসটি কাস্টমাইজ করুন


0

খালি অনুসন্ধান এড়ানোর এক উপায় অনুসন্ধান ক্ষেত্রের খালি মানের জন্য জাভাস্ক্রিপ্ট চেক করা এবং যদি ক্ষেত্রটি খালি পাওয়া যায় তবে নীচের মত অনুসন্ধান ফর্মটি জমা দেওয়া বন্ধ করুন:

$('#searchform').submit(function(){

            search_value =$.trim($('#searchform #s').val());

            if(search_value == ""){

                return false; // You can also pop a notification here to inform to user.
            }

});

0
# Catch empty searches
RewriteCond %{QUERY_STRING} ^s=$
RewriteRule ^ /? [L,R=301]

এটি কীভাবে প্রশ্নের উত্তর দেয় তা অস্পষ্ট। আপনি কি নিজের উত্তরটি সম্পাদন করতে ( উপরে সম্পাদনা বোতামটি ব্যবহার করে ) এবং এই কোডটি কী করবে, এটি কোথায় রাখবে এবং কীভাবে সমস্যাটি সমাধান করে, তার কিছু বিশদ যুক্ত করতে পারেন দয়া করে?
হাওডি_এমসিজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.