رفتن به مطلب

ویرایش تابع جستجو


پست های پیشنهاد شده

سلام دوستان یه سوال داشتم .

من از کدهای زیر برای ایجاد یک متاباکس استفاده کردم . کارش هم اینه که عنوان انگلیسی برای محصول توسط کاربر تعریف میشه

function sub_title_add_meta_box() {
    add_meta_box(
        'sub_title-sub-title',
        __( 'Sub-Title', 'sub_title' ),
        'sub_title_html',
        'product',
        'normal',
        'default'
    );
}
add_action( 'add_meta_boxes', 'sub_title_add_meta_box' );

function sub_title_html( $post) {
    wp_nonce_field( '_sub_title_nonce', 'sub_title_nonce' ); ?>

    <p>Sub title For Product</p>

    <p>
        <label for="sub_title_subtitle"><?php _e( 'subtitle', 'sub_title' ); ?></label><br>
        <input type="text" name="sub_title_subtitle" id="sub_title_subtitle" value="<?php echo sub_title_get_meta( 'sub_title_subtitle' ); ?>">
    </p><?php
}

function sub_title_save( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if ( ! isset( $_POST['sub_title_nonce'] ) || ! wp_verify_nonce( $_POST['sub_title_nonce'], '_sub_title_nonce' ) ) return;
    if ( ! current_user_can( 'edit_post', $post_id ) ) return;

    if ( isset( $_POST['sub_title_subtitle'] ) )
        update_post_meta( $post_id, 'sub_title_subtitle', esc_attr( $_POST['sub_title_subtitle'] ) );
}
add_action( 'save_post', 'sub_title_save' );

و ویرایش رو به این صورت دستی کردم که فقط تو عناوین جستجو کنه

<?php
}


function search_by_title_only( $search, $wp_query )
{
    global $wpdb;
    if ( empty( $search ) )
        return $search; // skip processing - no search term in query
    $q = $wp_query->query_vars;
    $n = ! empty( $q['exact'] ) ? '' : '%';
    $search =
    $searchand = '';
    foreach ( (array) $q['search_terms'] as $term ) {
        $term = esc_sql( like_escape( $term ) );
        $search .= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
        $searchand = ' AND ';
    }
    if ( ! empty( $search ) ) {
        $search = " AND ({$search}) ";
        if ( ! is_user_logged_in() )
            $search .= " AND ($wpdb->posts.post_password = '') ";
    }
    return $search;
}
add_filter( 'posts_search', 'search_by_title_only', 500, 2 );




 

جستجو درست کار میکنه ولی من می خوام تو متاباکسی که تعریف کردم هم مقادیر رو جستجو کنه ( متاباکس نام انگلیسی محصولات هستش . می خوام تو اون ها هم جستجو کنه ) با تشکر

لینک به ارسال
در 20 ساعت قبل، بویکا گفته است :

سلام دوستان یه سوال داشتم .

من از کدهای زیر برای ایجاد یک متاباکس استفاده کردم . کارش هم اینه که عنوان انگلیسی برای محصول توسط کاربر تعریف میشه


function sub_title_add_meta_box() {
    add_meta_box(
        'sub_title-sub-title',
        __( 'Sub-Title', 'sub_title' ),
        'sub_title_html',
        'product',
        'normal',
        'default'
    );
}
add_action( 'add_meta_boxes', 'sub_title_add_meta_box' );

function sub_title_html( $post) {
    wp_nonce_field( '_sub_title_nonce', 'sub_title_nonce' ); ?>

    <p>Sub title For Product</p>

    <p>
        <label for="sub_title_subtitle"><?php _e( 'subtitle', 'sub_title' ); ?></label><br>
        <input type="text" name="sub_title_subtitle" id="sub_title_subtitle" value="<?php echo sub_title_get_meta( 'sub_title_subtitle' ); ?>">
    </p><?php
}

function sub_title_save( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if ( ! isset( $_POST['sub_title_nonce'] ) || ! wp_verify_nonce( $_POST['sub_title_nonce'], '_sub_title_nonce' ) ) return;
    if ( ! current_user_can( 'edit_post', $post_id ) ) return;

    if ( isset( $_POST['sub_title_subtitle'] ) )
        update_post_meta( $post_id, 'sub_title_subtitle', esc_attr( $_POST['sub_title_subtitle'] ) );
}
add_action( 'save_post', 'sub_title_save' );

و ویرایش رو به این صورت دستی کردم که فقط تو عناوین جستجو کنه


<?php
}


function search_by_title_only( $search, $wp_query )
{
    global $wpdb;
    if ( empty( $search ) )
        return $search; // skip processing - no search term in query
    $q = $wp_query->query_vars;
    $n = ! empty( $q['exact'] ) ? '' : '%';
    $search =
    $searchand = '';
    foreach ( (array) $q['search_terms'] as $term ) {
        $term = esc_sql( like_escape( $term ) );
        $search .= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
        $searchand = ' AND ';
    }
    if ( ! empty( $search ) ) {
        $search = " AND ({$search}) ";
        if ( ! is_user_logged_in() )
            $search .= " AND ($wpdb->posts.post_password = '') ";
    }
    return $search;
}
add_filter( 'posts_search', 'search_by_title_only', 500, 2 );




 

جستجو درست کار میکنه ولی من می خوام تو متاباکسی که تعریف کردم هم مقادیر رو جستجو کنه ( متاباکس نام انگلیسی محصولات هستش . می خوام تو اون ها هم جستجو کنه ) با تشکر

سلام .

این ادرس دقیقا چیزیکه شما می خواید به دو صورت کدنویسی کرده

https://stackoverflow.com/questions/24183422/make-woocommerce-product-search-only-search-certain-fields

این ادرس هم خوبه .

https://wordpress.stackexchange.com/questions/78649/using-meta-query-meta-query-with-a-search-query-s

اگه باز هم مشکلتون حل نشد بفرمایید تا بیشتر راهنماییتون کنیم . موفق باشید .

لینک به ارسال
در 2 ساعت قبل، Mirrajabi گفته است :

سلام .

این ادرس دقیقا چیزیکه شما می خواید به دو صورت کدنویسی کرده

https://stackoverflow.com/questions/24183422/make-woocommerce-product-search-only-search-certain-fields

این ادرس هم خوبه .

https://wordpress.stackexchange.com/questions/78649/using-meta-query-meta-query-with-a-search-query-s

اگه باز هم مشکلتون حل نشد بفرمایید تا بیشتر راهنماییتون کنیم . موفق باشید .

دادا دمت گرم خودم حلش کردم . فقط اگه میشه یه لینک واسه آجاکس کردن فیلتر محصولات تو دسته بندی بده ( مثلا بر اساس قیمت )

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...