Ответы в темах

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Вот сам сайт

    Как-то так
    SELECT wp_posts.*, wp_postmeta.meta_value as post_country
    FROM wp_posts
    LEFT JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
    WHERE wp_postmeta.meta_key=’country’

    Юрий, спасибо, теперь думаю разберусь.

    SeVlad, мне даже интересно узнать это устроено. Да и когда я это понимаю мне проще работать)

    у меня такая задача, нужно сделать фильтр по нескольким направлениям: страна, стоимость и тд. Для этого я хотел добавить несколько полей в саму таблицу wp_post, и потом уже написать php файл который это все бы обрабатывал. Теперь, когда вы меня поставили на истинный путь, я сделаю все так же только не буду трогать wp_post, а воспользуюсь дополнительными полями.
    Спасибо большое.)

    Юрий, хорошо, пойду простым путем, полностью с Вами согласен, я тут практически ничего не знаю. На место уже все вернул)

    А где ж они по-вашему хранятся, если не в БД?

    А как их достать из бд? в phpMyAdmin они не отображаются, пробовал выбрать их sql запросом тоже ничего не дало.

    Кто Вас научил плохому?!!

    Никто, сам импровизирую, пока не сильно удачно)

    Мне нужно сделать фильтр по моим произвольным полям, соответственно мне нужно чтобы они были в базе данных, но пока что еще не сообразил каким образом они там хранятся.

    template php, который лежит в \wp-admin\includes. я добавил туда приведенный выше код, и теперь при добавлении поста, там отображается еще одно текстовое поле, а вот как его связать с самой бд, не могу понять.

    Я пробовал использовать произвольные поля, но проблема в том что они не сохраняются в БД. а мне это нужно. Может можно как — то их сохранить в базу данных?

    Юрий, я правильно понял, мне нужно добавить весь этот код в template.php ? можете пожалуйста детальней указать где мне нужно указать название моего поля из БД? (допустим post_country)
    Спасибо.

    /**
     * Adds a box to the main column on the Post and Page edit screens.
     */
    function myplugin_add_custom_box() {
    
        $screens = array( 'post', 'page' );
    
        foreach ( $screens as $screen ) {
    
            add_meta_box(
                'myplugin_sectionid',
                __( 'post_country', 'myplugin_textdomain' ),
                'myplugin_inner_custom_box',
                $screen
            );
        }
    }
    add_action( 'add_meta_boxes', 'myplugin_add_custom_box' );
    
    /**
     * Prints the box content.
     *
     * @param WP_Post $post The object for the current post/page.
     */
    function myplugin_inner_custom_box( $post ) {
    
      // Add an nonce field so we can check for it later.
      wp_nonce_field( 'myplugin_inner_custom_box', 'myplugin_inner_custom_box_nonce' );
    
      /*
       * Use get_post_meta() to retrieve an existing value
       * from the database and use the value for the form.
       */
      $value = get_post_meta( $post->ID, '_my_meta_value_key', true );
    
      echo '<label for="myplugin_new_field">';
           _e( "Description for this field", 'myplugin_textdomain' );
      echo '</label> ';
      echo '<input type="text" id="myplugin_new_field" name="myplugin_new_field" value="' . esc_attr( $value ) . '" size="25" />';
    
    }
    
    /**
     * When the post is saved, saves our custom data.
     *
     * @param int $post_id The ID of the post being saved.
     */
    function myplugin_save_postdata( $post_id ) {
    
      /*
       * We need to verify this came from the our screen and with proper authorization,
       * because save_post can be triggered at other times.
       */
    
      // Check if our nonce is set.
      if ( ! isset( $_POST['myplugin_inner_custom_box_nonce'] ) )
        return $post_id;
    
      $nonce = $_POST['myplugin_inner_custom_box_nonce'];
    
      // Verify that the nonce is valid.
      if ( ! wp_verify_nonce( $nonce, 'myplugin_inner_custom_box' ) )
          return $post_id;
    
      // If this is an autosave, our form has not been submitted, so we don't want to do anything.
      if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
          return $post_id;
    
      // Check the user's permissions.
      if ( 'page' == $_POST['post_type'] ) {
    
        if ( ! current_user_can( 'edit_page', $post_id ) )
            return $post_id;
    
      } else {
    
        if ( ! current_user_can( 'edit_post', $post_id ) )
            return $post_id;
      }
    
      /* OK, its safe for us to save the data now. */
    
      // Sanitize user input.
      $mydata = sanitize_text_field( $_POST['myplugin_new_field'] );
    
      // Update the meta field in the database.
      update_post_meta( $post_id, '_my_meta_value_key', $mydata );
    }
    add_action( 'save_post', 'myplugin_save_postdata' );
    
    // This function adds a meta box with a callback function of my_metabox_callback()
    function add_my_meta_box() {
         $var1 = 'this';
         $var2 = 'that';
         add_meta_box(
               'metabox_id',
               'Metabox Title',
               'my_metabox_callback',
               'page',
               'normal',
               'low',
               array( 'foo' => $var1, 'bar' => $var2)
          );
    }
    
    // $post is an object containing the current post (as a $post object)
    // $metabox is an array with metabox id, title, callback, and args elements.
    // The args element is an array containing your passed $callback_args variables.
    
    function my_metabox_callback ( $post, $metabox ) {
         echo 'Last Modified: ' . $post->post_modified;        // outputs last time the post was modified
         echo $metabox['args']['foo'];                         // outputs 'this'
         echo $metabox['args']['bar'];                         // outputs 'that'
         echo get_post_meta( $post->ID, 'my_custom_field', true ); // outputs value of custom field
    }
Просмотр 5 ответов — с 1 по 5 (всего 5)